これは2019年です。私たちの時間について他に何もすることがないときにIE11をサポートしたいと思います。利用可能なすべてのポリフィルについて少し混乱していることを認めざるを得ません。
babel-polyfill
が推奨するようですcore-js
core-js
es5-shim
およびes6-shim
私が理解している限り、これらすべてのものは新しいバージョンのEcmascriptを有効にするためのものであり、残りのパッチを適用するためのものではありません。いくつかのカスタムポリフィルがあります。 CustomEventをサポートします。
私はそれが何かを変えるとは思わないが、私は使用しています:
今私が持っている私のメインスクリプトの一番上に:
require('core-js');
しかし、私はまだ得ます:
Object doesn't support property of method 'Symbol(Symbol.iterator)_a.Kr7pt1C'
これは、ほとんどサポートされていないEcmascript反復機能のようです。
問題のマクロレベルで何をすべきかについてのアドバイスはありますか?
Symbol.iterator
は、実際には「for ... of」ポリフィルがないために発生しています。
私の完全な設定はこの回答に表示されます Babel 7にnode_modulesディレクトリを含める
トランスパイレーションにBabelを使用しているので、@babel/preset-env
プリセットし、ターゲット環境をIE11 *に設定します。
プリセットをインストールします:yarn add @babel/preset-env --dev
Babel構成でターゲットを構成します。
{
"presets": [
["@babel/presets-env", {
"targets": {
"browsers": {
"ie": "11"
}
},
}]
]
}
* From ドキュメント
@ babel/preset-envは、指定されたターゲット環境を受け取り、それらのマッピングと照合してプラグインのリストをコンパイルし、それをBabelに渡します。
公式ドキュメント では、と表示されます "イテレータを使用するには、Babelを含める必要があります polyfill 。" これをnpm install --save @babel/polyfill
でインストールし、アプリケーションのエントリポイントの上部にあるrequire("@babel/polyfill")
で使用します。
ポリフィルは便宜上提供されていますが、 @ babel/preset-env および seBuiltInsオプション と一緒に使用して、ポリフィル全体が含まれないようにしてください。常に必要です。それ以外の場合は、個々のポリフィルを手動でインポートすることをお勧めします。
core-js/fn/symbol/iterator.js
をインポートすることもできます。