Mise à niveau vers Babel 7: impossible de lire la propriété 'bindings' de null


118

Je viens de passer à Babel 7 (à partir de 6) en exécutant ces commandes:

npm remove babel-cli
npm install --save-dev @babel/cli @babel/core @babel/preset-env

Voici mon .babelrcdossier:

{ "presets": ["env"] }

Puis j'ai couru:

babel js/src --out-dir js/dist

Et cela se traduit par:

TypeError: Cannot read property 'bindings' of null
    at Scope.moveBindingTo (/xyz/node_modules/@babel/traverse/lib/scope/index.js:867:13)
    at BlockScoping.updateScopeInfo (/xyz/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:364:17)
    at BlockScoping.run (/xyz/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:330:12)
    at PluginPass.BlockStatementSwitchStatementProgram (/xyz/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:70:24)
    at newFn (/xyz/node_modules/@babel/traverse/lib/visitors.js:193:21)
    at NodePath._call (/xyz/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/xyz/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/xyz/node_modules/@babel/traverse/lib/path/context.js:88:12)
    at TraversalContext.visitQueue (/xyz/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitSingle (/xyz/node_modules/@babel/traverse/lib/context.js:90:19)

Qu'ai-je fait de mal?

Réponses:


306

Dans votre .babelrcdossier, changez

{ "presets": ["env"] } 

à

{ "presets": ["@babel/preset-env"] }

(et installez ce package si vous ne l'avez pas déjà fait).

Dans votre, .babelrcvous faites toujours référence au package babel-preset-env(qui est pour 6.x), vous voulez référencer à la @babel/preset-envplace (qui est pour 7.x).

https://github.com/babel/babel/issues/6186#issuecomment-366556833

Remarque: vous devez également effectuer cette modification webpack.config.jssi elle existe également.

Voici l'exemple de section de configuration du webpack où vous devez modifier le préréglage:

use: {
  loader: 'babel-loader',
  options: {
    // Here you should change 'env' to '@babel/preset-env'
    presets: ['@babel/preset-env'],
  },
},

8
Notez que vous devez également effectuer cette modification webpack.config.jssi elle existe également.
hawkeye
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.