Nous sommes en 2019, nous aimerions soutenir IE11 lorsque nous n'avons rien de mieux à faire de notre temps et je dois admettre que je suis un peu confus à propos de tous les polyfills disponibles.
babel-polyfill
semble recommander core-js
core-js
es5-shim
et es6-shim
Pour autant que je sache, toutes ces choses sont censées permettre une version plus récente d'Ecmascript mais pas pour corriger le reste. J'ai quelques polyfills personnalisés, par exemple pour prendre en charge CustomEvent.
Je ne pense pas que cela change quoi que ce soit, mais j'utilise:
En ce moment, en haut de mon script principal, j'ai:
require('core-js');
Mais je reçois toujours:
Object doesn't support property of method 'Symbol(Symbol.iterator)_a.Kr7pt1C'
Ce qui semble être principalement une fonction d'itération Ecmascript non prise en charge.
Des conseils sur quoi faire au niveau macro du problème?
Le Symbol.iterator
est en fait par un polyfill "for ... of" manquant.
Ma configuration complète est visible dans cette réponse Inclure le répertoire node_modules dans Babel 7
Puisque vous utilisez Babel pour la transpilation, vous pouvez utiliser le @babel/preset-env
prédéfinissez et définissez votre environnement cible sur IE11 *.
Installez le préréglage: yarn add @babel/preset-env --dev
Configurez vos cibles dans votre configuration Babel:
{
"presets": [
["@babel/presets-env", {
"targets": {
"browsers": {
"ie": "11"
}
},
}]
]
}
* De les docs
@ babel/preset-env prend tous les environnements cibles que vous avez spécifiés et les compare à ses mappages pour compiler une liste de plugins et la transmettre à Babel.
Dans le documentation officielle , il est dit "Pour utiliser les itérateurs, vous devez inclure le Babel polyfill ." Vous pouvez essayer de l'installer avec npm install --save @babel/polyfill
Et l'utiliser avec require("@babel/polyfill")
en haut du point d'entrée de votre application.
Le polyfill est fourni par commodité mais vous devez l'utiliser avec @ babel/preset-env et option useBuiltIns afin qu'il n'inclue pas le polyfill entier qui n'est pas ' t toujours nécessaire. Sinon, nous vous recommandons d'importer manuellement les polyfills individuels.
Vous pouvez également essayer d'importer core-js/fn/symbol/iterator.js
.