J'ai une reactjs
application écrite en utilisant les normes ES6, et je l'utilise webpack
pour la créer. Le webpack
charge les js
modules en utilisant babel-loader
. Pour être précis, j'utilise les versions de packages suivantes:
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Cependant, après l'avoir construit, l'IE 10 donne l'erreur suivante 'Symbol' is undefined
. Ne devrait-il pas babel
être censé définir le Symbol
? Existe-t-il une configuration spécifique webpack
ou babel
dois-je définir pour la faire fonctionner? J'utilise la {stage: 0}
configuration dans mon .babelrc
.
Toute aide serait appréciée, merci!
Réponses:
Vous pouvez exiger polyfill dans le point d'entrée de votre code afin qu'il soit intégré au reste de JavaScript.
Une option consiste à utiliser:
require('babel-polyfill');
Ou:
import 'babel-polyfill';
Tout cela est expliqué dans la documentation .
la source
babel-polyfill
corrigé ce problème pour moi. Merci!Ok, j'ai finalement découvert que
babel
seul ne fait pas de polyfill. Y compris le script a<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
résolu ce problème pour moi.la source
Cette solution fonctionnera à coup sûr, cela a fonctionné pour moi lorsque j'ai rencontré l'erreur: «Symbole» n'est pas défini dans IE. Cela fonctionnait plus tôt dans Chrome et Firefox, mais IE lançait cette erreur. Il m'a fallu quelques heures pour trouver cette solution. J'utilise le dernier React en ce moment react "react": "^ 16.5.0" sur la machine Windows.
1. Install babel-polyfill npm install --save-dev babel-polyfill In package.json, it should have the following entries "devDependencies": { "babel-core": "^6.26.3", "babel-loader": "^8.0.2", "babel-polyfill": "^6.26.0", "babel-preset-react": "^6.24.1" } 2. In index.js, add import babelPolyfill from 'babel-polyfill';
Le problème devrait être résolu
la source
OK, j'ai eu le même problème, mais dans mon cas, c'était assez différent, donc fondamentalement, vous devez inclure le script dans le fichier d'index comme ci-dessous:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
Mais dans mon cas, j'ai déjà inclus cela, après quelques investigations, j'ai découvert que mon proxy bloquait le script ...
Donc , assurez- vous d' inclure dans index.html et aussi assurez - vous que vous avez accès au script où vous en avez besoin pour éviter l'erreur qui se passe ... meilleure façon simplement copier et coller l'URL dans le navigateur ...
Mais maintenant que nous arrivons à ce point, il ne s'agit pas de Symbol lui-même, quel est le symbole qui ne peut pas être reconnu dans IE?
la source
dans la documentation sur Runtime
// in bash npm install babel-transform-runtime --save-dev // in gulpfile .pipe(babel({ plugins: ['transform-runtime'] }))
edit: mieux encore sur heroku en mode prod utilisez --save au lieu de --save-dev
la source
@babel/plugin-transform-runtime
Si vous obtenez cette erreur dans une application angulaire, vous devez annuler le commentaire des lignes suivantes dans polyfills.ts -
/** IE9, IE10 and IE11 requires all of the following polyfills. **/ import 'core-js/es6/symbol'; import 'core-js/es6/object'; import 'core-js/es6/function'; import 'core-js/es6/parse-int'; import 'core-js/es6/parse-float'; import 'core-js/es6/number'; import 'core-js/es6/math'; import 'core-js/es6/string'; import 'core-js/es6/date'; import 'core-js/es6/array'; import 'core-js/es6/regexp'; import 'core-js/es6/map'; import 'core-js/es6/weak-map'; import 'core-js/es6/set';
la source