2

请帮助我理解为什么 bable/runtime/helpers 无法解析 interopRequireDefault。我刚刚升级了 babel,试图将我的依赖项显式移动到 babel 7.0.0。据我了解,如果我的 babelrc 文件中提供的“插件”没有检测到浏览器支持最新的 babel 使用。

错误是:模块构建失败:TypeError:无法读取 null 的属性“绑定”

我的 babel-loader 肯定是在调用文件并启动编译。我是否需要指定其他一些配置或遍历过程?

开发依赖

"devDependencies": {
"@babel/cli": "^7.0.0-beta.34",
"@babel/plugin-syntax-dynamic-import": "7.0.0-beta.34",
"@babel/plugin-syntax-export-default-from": "7.0.0-beta.34",
"@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.34",
"@babel/plugin-transform-runtime": "^7.0.0-beta.34",
"@babel/plugin-transform-strict-mode": "7.0.0-beta.34",
"@babel/preset-react": "^7.0.0-beta.34",

babelrc

  "presets": [
    "latest",
    "react",
  ],
  "plugins": [
    "@babel/plugin-syntax-export-default-from",
    "@babel/plugin-syntax-export-namespace-from",
    "@babel/plugin-transform-runtime",
    "@babel/plugin-syntax-object-rest-spread",
    "@babel/plugin-syntax-dynamic-import",
    "@babel/plugin-transform-strict-mode",
  ],

at Scope.moveBindingTo (/node_modules/babel-core/node_modules/babel-traverse/lib/scope/index.js:939:12)
at BlockScoping.updateScopeInfo (/node_modules/babel-preset-es2015/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:364:17)
at BlockScoping.run (node_modules/babel-preset-es2015/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:330:12)
at PluginPass.BlockStatementSwitchStatementProgram (node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js:70:24)
4

1 回答 1

4

您正在使用babel-preset-latest,它已被弃用babel-preset-env(对于 Babel 7,它@babel/preset-env在 npm 上)。该latest预设已被弃用一段时间,Babel 7 完全放弃了它。您使用的预设适用于 Babel 6,与 Babel 7 不兼容。

您需要迁移到@babel/preset-env.

npm install --save-dev @babel/preset-env

可以将env预设配置为仅转换目标浏览器不支持的功能,但无需任何配置,它的行为与latest预设完全相同,因此您可以在.babelrc. 此外,react您的配置中的预设应该是@babel/preset-react.

"presets": [
  "@babel/preset-env",
  "@babel/preset-react"
],
于 2017-12-13T16:22:57.667 回答