需要 Babel "7.0.0-0",但加载的是 "6.26.3"。

82

无论我尝试安装什么(babel wise),都会持续出现这个错误,我遵循其他类似报告的步骤。以下是堆栈跟踪:

error: bundling failed: Error: Requires Babel "^7.0.0-0", but was
loaded with "6.26.3". If you are sure you have a compatible version of
@babel/core, it is likely that something in your build process is
loading the wrong version. Inspect the stack trace of this error to
look for the first entry that doesn't mention "@babel/core" or
"babel-core" to see what is calling Babel. (While processing preset:
"C:\\Users\\Admin-ESS\\Absent\\node_modules\\@babel\\preset-env\\lib\\index.js")
    at throwVersionError (C:\Users\Admin-ESS\Absent\node_modules\@babel\preset-env\node_modules\@babel\helper-plugin-utils\lib\index.js:65:11)
    at Object.assertVersion (C:\Users\Admin-ESS\Absent\node_modules\@babel\preset-env\node_modules\@babel\helper-plugin-utils\lib\index.js:13:11)
    at _default (C:\Users\Admin-ESS\Absent\node_modules\@babel\preset-env\lib\index.js:150:7)
    at C:\Users\Admin-ESS\Absent\node_modules\@babel\preset-env\node_modules\@babel\helper-plugin-utils\lib\index.js:19:12
    at C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\options\option-manager.js:317:46
    at Array.map (<anonymous>)
    at OptionManager.resolvePresets (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\options\option-manager.js:275:20)
    at OptionManager.mergePresets (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\options\option-manager.js:264:10)
    at OptionManager.mergeOptions (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\options\option-manager.js:249:14)
    at OptionManager.init (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\options\option-manager.js:368:12)
    at File.initOptions (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\index.js:212:65)
    at new File (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\file\index.js:135:24)
    at Pipeline.transform (C:\Users\Admin-ESS\Absent\node_modules\metro\node_modules\babel-core\lib\transformation\pipeline.js:46:16)
    at Object.transform (C:\Users\Admin-ESS\Absent\node_modules\metro\src\transformer.js:135:5)
    at Object.transformCode [as transform] (C:\Users\Admin-ESS\Absent\node_modules\metro\src\JSTransformer\worker\index.js:253:15)
    at execMethod (C:\Users\Admin-ESS\Absent\node_modules\jest-worker\build\child.js:92:29)
    at process.on (C:\Users\Admin-ESS\Absent\node_modules\jest-worker\build\child.js:42:7)
    at process.emit (events.js:180:13)
    at emit (internal/child_process.js:783:12)

我的package.json文件:

{
  "name": "Absent",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "babel-preset-react-native-stage-0": "^1.0.1",
    "jest": "^23.5.0",
    "jest-react-native": "^18.0.0",
    "react-test-renderer": "16.3.1"
  },
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "test": "jest"
  },
  "jest": {
    "preset": "react-native"
  },
  "dependencies": {
    "@babel/core": "^7.0.0-rc.1",
    "@babel/preset-env": "^7.0.0-rc.1",
    "@babel/preset-react": "^7.0.0-rc.1",
    "jail-monkey": "^1.0.0",
    "prop-types": "^15.6.2",
    "react": "16.3.1",
    "react-native": "^0.55.4",
    "react-native-device-info": "^0.22.4",
    "react-native-elements": "^0.19.1",
    "react-native-firebase": "^4.3.8",
    "react-native-modal": "^6.5.0",
    "react-native-router-flux": "^4.0.1",
    "react-native-size-matters": "^0.1.2",
    "react-native-vector-icons": "^5.0.0",
    "react-redux": "^5.0.7",
    "redux": "^4.0.0",
    "redux-thunk": "^2.3.0"
  },
  "rnpm": {
    "assets": [
      "./assets/fonts/"
    ]
  }
}

任何指针或建议都将不胜感激...

1
对我来说没有起作用,但是有多个人报告使用 babel-upgrade 工具取得了成功。 - BlueRaja - Danny Pflughoeft
15个回答

62

使用命令行测试您正在运行的版本

babel -V

如果不是版本7或更高版本

npm uninstall babel-cli -g
npm uninstall babel-core -g

而且

npm install @babel/cli -g
npm install @babel/core -g
如果您正在使用Jest,请运行:

如果你 are using Jest run

npm install babel-core@7.0.0-bridge.0 --save-dev

如果你进行Node开发,卸载并重新安装@babel/node就可以解决问题。


2
卸载并重新安装@babel/node对我有用,谢谢。 - Puneet
1
问题解决了。谢谢! - Blargian
谢谢!这解决了我的问题。我还需要在我的存储库中本地执行安装和卸载步骤! - Jasmin Virdi
1
没有对我起作用。 - B-Tron of the Autobots

34

7
尝试使用babel-core@^7.0.0-bridge.0进行了实验,效果很好。感谢及时回复 :) - Ray Jonathan
22
对我来说,这个问题还没有得到解决:( - Dominic
可爱的解决方案。 - Sergiu Mare

25
有时候是因为你同时安装了babel-cli和babel/clibabel-core和@babel/core导致冲突。
因此:
1)删除node_modules文件夹。
2)从package.json文件中删除babel-cli、babel-core,只保留@babel/core、@babel/cli。
3)运行npm install命令。 babel-cli会与@babel/cli发生冲突。 babel-core会与@babel/core发生冲突。

2
问题解决了。谢谢! - Yazin Castaño Moreno

10

对于那些仍在奋斗的人,四天前 Jest v24发布了对babel 7的原生支持。尽情享受吧。


1
谢谢!对我来说,这意味着从我的“globalSetup”文件中删除require('babel-register')require('@babel/polyfill/noConflict') - oyalhi
升级到Jest v24对我有效,而无需使用babel-core@^7.0.0-bridge.0(它实际上并没有起作用)。尝试了两种方法后,我认为这应该是2019年的最佳答案。 - Stephen Shank

8

我在网上找到的所有解决方案都不起作用,我是以下方式解决的:

  1. 从package.json中删除jest@babel/core(保留babel-core v7桥接程序)
  2. 删除node_modules和package-lock.json
  3. 运行npm install
  4. 运行npm install jest @babel/core --save-dev

3

我从 Babel 文档中发现,依赖项安装顺序存在问题。

注意: 在 npx babel 之前,请先安装 @babel/cli 和 @babel/core,否则 npx 将会安装过时的 babel 6.x。

根据 文档,我发现将 package.json 中的两个条目移除并按照正确顺序添加后,已解决我的问题。这是一个奇怪的边缘情况。


2

您需要这四个软件包,这将解决问题:

 npm install @babel/cli
 npm install @babel/core
 npm install @babel/node
 npm install @babel/preset-env

2
在我的情况下,问题是由于升级@babel/core版本而导致的,同时我仍使用过时的webpack(和/或webpack-cli,我批处理中简单地将它们视为相同)。我碰巧使用了一个Webpack配置文件webpack.config.babel.js。Webpack似乎通过使用babel-register在内部处理这个问题(请参见这个SO答案)。这是由我的require堆栈所证明的:
at OptionManager.mergePresets (/Users/me/Projects/github-wide-mode/node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
    at OptionManager.mergeOptions (/Users/me/Projects/my-project/node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
    at OptionManager.init (/Users/me/Projects/my-project/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
    at compile (/Users/me/Projects/my-project/node_modules/babel-register/lib/node.js:103:45)
    at loader (/Users/me/Projects/my-project/node_modules/babel-register/lib/node.js:144:14)
    at Object.require.extensions.<computed> [as .js] (/Users/me/Projects/my-project/node_modules/babel-register/lib/node.js:154:7)
                                                                                                 ^^^^^^^^^^^^^^
    at require (/Users/me/Projects/my-project/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at WEBPACK_OPTIONS (/Users/me/Projects/my-project/node_modules/webpack-cli/bin/utils/convert-argv.js:114:13)
    at requireConfig (/Users/me/Projects/my-project/node_modules/webpack-cli/bin/utils/convert-argv.js:116:6)

因为过时的 webpack-cli 版本,webpack-cli 调用了 babel-register - 我猜测其版本已经确定,这导致它针对我安装的 @babel/babel-core 较旧的版本进行操作。
解决方案是:卸载 webpackwebpack-cli 包,删除 node_modules/package-lock.json,然后进行全新的 npm install
如果这不起作用,建议按照错误提示中的建议进行操作:

Error: Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version. Inspect the stack trace of this error to look for the first entry that doesn't mention "@babel/core" or "babel-core" to see what is calling Babel.

以确定(很可能是)依赖项不匹配的原因。我还建议删除 package.json 中的 dependencies(和/或 devDependencies)条目,然后重新安装它们到 npm 默认的版本,直到它们可以相互兼容。剥离非必要的依赖项并重置默认依赖项最终应该会生效。

对于任何正在进行降级升级的古老包设置使用 webpack.config.babel.js 的人,需要注意一点:旧版本的 webpackwebpack-cli 中似乎已经包含了 babel-register,但在较新版本中已被删除。这会导致 webpack-cli 抱怨“无法为“.babel.js”使用指定的模块加载器。”在这种情况下,只需安装 @babel/register 即可。 - zr0gravity7

2
我这边的问题是 babel-register 导入的 babel-core 和 Babel 文档所需的 @babel/core 发生了冲突,后者被设置为根 npm 依赖项。
看起来 babel-register 已经迁移到了 @babel/register。虽然他们对其 cli/core 包进行了更新,但 Babel 并没有更新文档中的新模块名称。
这是一个对我有效的 Babel 安装文档的更新
安装
npm install --save-dev @babel/register

使用说明

在您的package.json文件中进行以下更改:

{
  "scripts": {
    "test": "mocha --require @babel/register"
  }
}

1
不建议全局安装 Babel,可能是你的 IDE 已经识别到了全局安装的包并基于此进行操作。或者更有可能的是,你的包之间存在冲突,例如 babel-cli 和 @babel/cli 冲突。

虽然你可以在电脑上全局安装 Babel CLI,但最好逐个项目本地安装。

yarn remove global @babel/cli @babel/core

在项目目录中...
yarn remove babel-cli 
yarn add @babel/cli @babel/core @babel/node --dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接