web-dev-qa-db-fra.com

Erreur "une seule instance de babel-polyfill est autorisée"

J'ai besoin d'aide pour diagnostiquer et corriger cette erreur:

"Error: only one instance of babel-polyfill is allowed"

J'ai le suivant dans mon package.json:

"devDependencies": {
    "babel-core": "^6.23.1",
    "babel-jest": "^19.0.0",
    "babel-loader": "^6.3.2",
    "babel-plugin-transform-object-rest-spread": "^6.23.0",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-react": "^6.23.0" ...

"dependencies": {
    "babel-polyfill": "^6.23.0" ...

Et ceci et cette ligne d’entrée dans ma config de webpack: 

entry: ["babel-polyfill", path.resolve(APP_PATH, 'index')],
...
module: {
 rules: [
  {
    test: /\.js$/,
    exclude: /node_modules/,
    loader: 'babel-loader',
    query: {
      // specify that we will be dealing with React code
      presets: ['react', 'es2015']
    }
  }
]}
10
foobar

Si le coupable est HtmlWebpackPlugin, vous devez ajouter l'option inject: false lors de l'instanciation du plugin. Certaines configurations sans cette option entraînent le chargement de votre code javascript construit deux fois.

9
Aethix

Idempotent Babel Polyfill peut être importé plusieurs fois

Installer depuis NPM

npm install --save idempotent-babel-polyfill

Puis importez-le

import 'idempotent-babel-polyfill';
3
Jam Risser

Only one instance of babel-polyfill is allowed apparaît généralement si l'ordre des fichiers à emballer n'est pas correct lors de l'utilisation de CommonsChunkPlugin ou HtmlWebpackPlugin.

pour HtmlWebpackPlugin vous pouvez trier manuellement vos fichiers avec chunksSortMode

Utiliser "webpack": "^1.14.0":

new HtmlWebpackPlugin({
  ...
  chunksSortMode: 'dependency',
  ...
}),

Source: gdi2290 @ GitHub - 1er juillet 2016/22 janvier 2018

3
Wouter Vanherck

Vous l’obtenez peut-être indirectement à partir d’un autre module Babel.

Solutions possibles:

  1. Assurez-vous que toutes les versions des modules babel soient identiques. Une erreur est probablement due à différentes versions de babel-polyfil.
  2. Supprimez babel-polyfil de package.json afin qu’il soit utilisé à partir de
    babel-plugin-transform-object-rest-spread.

référence: https://github.com/babel/babel/issues/1019

commentaire de jameslk 

Je l'ai compris quand même. Il semble que babel-runtime ait été déplacé vers babel-plugin-transform-runtime et cela doit être ajouté à la liste des plugins pour pouvoir l'utiliser. Serait aidé si cela a été documenté quelque part.

0
m.rohail.akram