Babel与Core-JS-Polyfills与IE11不兼容

时间:2019-11-08 07:40:16

标签: webpack babel core-js

我已经用webpack配置了babel,最初使用@ babel / polyfill作为webpack配置中的一个条目。通过这种配置,我可以在IE11中运行我的Web应用程序而没有任何错误。由于不推荐使用@ babel / polyfill,因此我尝试使用core-js,这是我的问题开始的地方。 IE11现在给我一个关于webpack:///node_modules/core-js/modules/es.object.set-prototype-of.js文件的错误:

  

SCRIPT1002:语法错误

脚本本身如下所示:

enter image description here

据我了解,core-js不应该包含在要翻译的babel-loader中,但是在我看来,上面显示的脚本使用的是IE11无法理解的功能。我在这里想念什么?

当前配置如下:

Babel-loader

{
  test: /\.js$/,
  exclude: /node_modules/,
  loader: 'babel-loader',
  options: {
    configFile: './.babelrc',
  },
}

.babelrc

{
  "sourceType": "unambiguous",
  "presets": [
    [
      "@babel/preset-env",
      {
        "useBuiltIns": "usage",
        "corejs": {"version": 3, "proposals": true}
      }
    ]
  ]
}

package.json

 "browserslist": [
    "defaults"
 ]

我还从webpack条目和程序包管理器中删除了@ babel / polyfill,而是安装了core-js。

1 个答案:

答案 0 :(得分:0)

尝试删除“排除”选项以查看是否为npm模块。 然后,您可以尝试排除除该模块以外的所有模块。 您可以看到@ babel / preset-env受选项'debug'影响的模块,如下所示(在文件.babelrc中):

 {
  "sourceType": "unambiguous",
  "presets": [
    [
      "@babel/preset-env",
      {
        "useBuiltIns": "usage",
        "corejs": {"version": 3, "proposals": true},
        "debug": true
      }
    ]
  ]
}

要仅排除出现错误的模块,可以执行以下操作:

    exclude: /node_modules\\(?!(module_to_include|other_module_to_include)).*/,

查看是否 https://github.com/babel/babel-loader/issues/171有帮助