Tingkatkan ke Babel 7: Tidak dapat membaca 'bindings' properti dari null


118

Saya baru saja meningkatkan ke Babel 7 (dari 6) dengan menjalankan perintah ini:

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

Ini .babelrcfile saya :

{ "presets": ["env"] }

Lalu saya lari:

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

Dan itu menghasilkan:

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)

Apa kesalahan yang telah aku perbuat?

Jawaban:


306

Di .babelrcfile Anda , ubah

{ "presets": ["env"] } 

untuk

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

(dan instal paket itu jika Anda belum melakukannya).

Di Anda, .babelrcAnda masih mereferensikan paket babel-preset-env(yang untuk 6.x), Anda ingin mereferensikan @babel/preset-envsebagai gantinya (yang untuk 7.x).

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

Catatan: Anda juga harus melakukan perubahan ini webpack.config.jsjika ada juga.

Berikut adalah contoh bagian konfigurasi webpack tempat Anda harus mengubah preset:

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

8
Perhatikan bahwa Anda juga harus melakukan perubahan ini webpack.config.jsjika ada juga.
hawkeye
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.