Nâng cấp lên Babel 7: Không thể đọc thuộc tính 'ràng buộc' của null


118

Tôi vừa nâng cấp lên Babel 7 (từ 6) bằng cách chạy các lệnh sau:

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

Đây là .babelrctệp của tôi :

{ "presets": ["env"] }

Sau đó tôi chạy:

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

Và kết quả là:

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)

Tôi đã làm gì sai?

Câu trả lời:


306

Trong .babelrctệp của bạn , hãy thay đổi

{ "presets": ["env"] } 

đến

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

(và cài đặt gói đó nếu bạn chưa có).

Trong của .babelrcbạn, bạn vẫn đang tham chiếu đến gói babel-preset-env(dành cho 6.x), bạn muốn tham chiếu @babel/preset-envthay thế (dành cho 7.x).

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

Lưu ý: bạn cũng nên thực hiện thay đổi này webpack.config.jsnếu có.

Đây là phần cấu hình webpack mẫu nơi bạn nên thay đổi cài đặt trước:

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

8
Lưu ý rằng bạn cũng nên thực hiện thay đổi này webpack.config.jsnếu nó cũng ở đó.
hawkeye
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.