web-dev-qa-db-ja.com

2019年のIE11のポリフィル

これは2019年です。私たちの時間について他に何もすることがないときにIE11をサポートしたいと思います。利用可能なすべてのポリフィルについて少し混乱していることを認めざるを得ません。

  • babel-polyfillが推奨するようですcore-js
  • core-js
  • es5-shimおよびes6-shim

私が理解している限り、これらすべてのものは新しいバージョンのEcmascriptを有効にするためのものであり、残りのパッチを適用するためのものではありません。いくつかのカスタムポリフィルがあります。 CustomEventをサポートします。

私はそれが何かを変えるとは思わないが、私は使用しています:

  • ウェブパック2.7.0
  • バベル6.16

今私が持っている私のメインスクリプトの一番上に:

require('core-js');

しかし、私はまだ得ます:

Object doesn't support property of method 'Symbol(Symbol.iterator)_a.Kr7pt1C'

これは、ほとんどサポートされていないEcmascript反復機能のようです。

問題のマクロレベルで何をすべきかについてのアドバイスはありますか?

編集

Symbol.iteratorは、実際には「for ... of」ポリフィルがないために発生しています。

編集:ソリューション

私の完全な設定はこの回答に表示されます Babel 7にnode_modulesディレクトリを含める

8
AsTeR

トランスパイレーションにBabelを使用しているので、@babel/preset-envプリセットし、ターゲット環境をIE11 *に設定します。

  1. プリセットをインストールします:yarn add @babel/preset-env --dev

  2. Babel構成でターゲットを構成します。

{
  "presets": [
    ["@babel/presets-env", {
      "targets": {
        "browsers": {
          "ie": "11"
        }
      },
    }]
  ]
}

* From ドキュメント

@ babel/preset-envは、指定されたターゲット環境を受け取り、それらのマッピングと照合してプラグインのリストをコンパイルし、それをBabelに渡します。

4
Jake

公式ドキュメント では、と表示されます "イテレータを使用するには、Babelを含める必要があります polyfill 。" これをnpm install --save @babel/polyfillでインストールし、アプリケーションのエントリポイントの上部にあるrequire("@babel/polyfill")で使用します。

ポリフィルは便宜上提供されていますが、 @ babel/preset-env および seBuiltInsオプション と一緒に使用して、ポリフィル全体が含まれないようにしてください。常に必要です。それ以外の場合は、個々のポリフィルを手動でインポートすることをお勧めします。

core-js/fn/symbol/iterator.jsをインポートすることもできます。

1
Yu Zhou