BABEL 三月 26, 2021

Babel 编译误伤 core-js?

文章字数 915 阅读约需 1 mins. 阅读次数 --

一个不太常见,但很重要的 core-js bug 讨论:https://github.com/zloirock/core-js/issues/514

问题现象

core-js 是 es3 的代码,应当是不需要 babel 编译的,但是,因为某种原因(暂不清楚),babel 会对 core-js 进行处理,并且会影响其中的代码,进而会发现 Symbol 在 Android 6.0 等低版本浏览器的兼容性出问题。

在移动端页面,小伙伴实际遭遇到了这种现象,依赖的第三方包使用了 Symbol 语法,即使引入全量的 core-js,依然无法解决兼容性报错问题,最终小伙伴追踪到了上方的 github issues。

解决办法

暂时需要手动将 core-js 添加到 babel-loaderexclude 配置中,指定 babel 不要去处理它。

/**
 * Babel 编译时,会处理 core-js(未来可能会被修复),
 * 导致 polyfill 内部代码发生了变化,产生一些微小的影响,如 Symbol 问题。
 * 暂时我们手动声明略过。
 * https://github.com/zloirock/core-js/issues/514
 * https://github.com/rails/webpacker/pull/2031
 */
exclude: [
  /node_modules[\\/]core-js/,
],

上一篇:
下一篇:
0%