2019 年针对 IE11 的 Polyfill

AsT*_*TeR 12 javascript frontend polyfills internet-explorer-11

这是 2019 年,当我们没有更好的事情可做时,我们希望支持 IE11,我不得不承认我对所有可用的 polyfill 感到有些困惑。

  • babel-polyfill 似乎推荐 core-js
  • core-js
  • es5-shimes6-shim

据我所知,所有这些东西都应该启用较新版本的 Ecmascript 但不修补其余部分。我有几个自定义 polyfill,例如支持 CustomEvent。

我认为它不会改变任何东西,但我正在使用:

  • 网络包 2.7.0
  • 通天塔 6.16

现在在我的主脚本的顶部,我有:

require('core-js');
Run Code Online (Sandbox Code Playgroud)

但我仍然得到:

Object doesn't support property of method 'Symbol(Symbol.iterator)_a.Kr7pt1C'
Run Code Online (Sandbox Code Playgroud)

这似乎主要是不受支持的 Ecmascript 迭代功能。

关于在问题的宏观层面做什么的任何建议?

编辑

Symbol.iterator一个缺少“为......的”填充工具实际上是。

编辑:解决方案

我的完整配置在这个答案中可见在 Babel 7 中包含 node_modules 目录

小智 5

由于您使用 Babel 进行转译,您可以使用@babel/preset-env预设并将目标环境设置为 IE11*。

  1. 安装预设: yarn add @babel/preset-env --dev

  2. 在你的 Babel 配置中配置你的目标:

{
  "presets": [
    ["@babel/presets-env", {
      "targets": {
        "browsers": {
          "ie": "11"
        }
      },
    }]
  ]
}
Run Code Online (Sandbox Code Playgroud)

*来自文档

@babel/preset-env 接受您指定的任何目标环境,并根据其映射检查它们以编译插件列表并将其传递给 Babel。