【问题标题】:Requires Babel "7.0.0-0" but was loaded with "6.26.3"需要 Babel "7.0.0-0" 但加载了 "6.26.3"
【发布时间】:2019-01-23 04:55:39
【问题描述】:

无论我尝试安装什么(babel 明智的),都会不断收到此错误,因为我遵循其他类似的报告。这是堆栈跟踪:

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/"
    ]
  }
}

任何指针将不胜感激...

【问题讨论】:

  • 它对我不起作用,但很多人报告说使用 babel-upgrade 工具取得了成功。

标签: reactjs react-native babeljs


【解决方案1】:

用cmd测试你运行的是哪个版本

babel -V

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

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

还有

npm install @babel/cli -g
npm install @babel/core -g

如果您使用的是 Jest 运行

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

如果你做节点开发,卸载并重新安装@babel/node 可以解决问题。

【讨论】:

  • 卸载并重新安装 @babel/node 对我有用,谢谢
  • 也解决了我的问题。谢谢!
  • 谢谢!这解决了我的问题。我还需要在我的存储库中本地执行安装和卸载步骤!
【解决方案2】:

看起来您需要按照文档的建议安装babel-corehttps://jestjs.io/docs/en/getting-started#using-babel

yarn add --dev babel-jest babel-core@^7.0.0-bridge.0 @babel/core regenerator-runtime

【讨论】:

  • 尝试使用 babel-core@^7.0.0-bridge.0 并且成功了。感谢您的及时回复:)
  • 这个问题对我来说不是固定的 :(
  • 可爱的解决方案。
【解决方案3】:

有时是因为你同时安装了 babel-cli 和 babel/cli,或者 babel-core 和 @babel/core 它会导致冲突

所以

1) 删除节点模块

2) 从你的 package.json 中移除 babel-cli、babel-core,保留 @babel/core、@babel/cli

3) npm 安装

babel-cli@babel/cli

冲突

bable-core@babel/core

冲突

【讨论】:

    【解决方案4】:

    我在网上找到的解决方案都不起作用,我通过以下方式修复了它:

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

    【讨论】:

      【解决方案5】:

      对于那些仍在为此抗争的人,4 天前 Jest v24 发布,原生支持 babel 7。享受吧。

      【讨论】:

      • 谢谢!对我来说,这意味着从我的globalSetup 文件中删除require('babel-register')require('@babel/polyfill/noConflict')
      • 升级到 Jest v24 对我有用,不需要 babel-core@^7.0.0-bridge.0(实际上没有用)。两者都试过了,我觉得这应该是 2019 年公认的答案。
      【解决方案6】:

      从 Babel Docs 中,我发现安装 deps 的顺序存在问题。

      注意:请先安装@babel/cli 和@babel/core,再安装npx babel,否则npx 会安装过期的babel 6.x。

      根据用法docs。我发现从package.json 中删除这两个项目并按顺序添加它们,解决了我的问题。奇怪的边缘情况。

      【讨论】:

        【解决方案7】:

        我这边的问题是babel-core(由babel-register 导入)和@babel/core 之间的冲突,Babel 文档要求最新用法并设置为根 npm 依赖项

        似乎babel-register 已移至@babel/register。 Babel 没有用新的模块名称更新文档,尽管他们为他们的 cli/core 包做了更新

        这是对我有用的setup babel doc 的更新:

        安装

        npm install --save-dev @babel/register
        

        用法

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

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

        【讨论】:

          【解决方案8】:

          不建议全局安装 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
          

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              【解决方案10】:

              就我而言,问题是由升级我的@babel/core 版本引起的,而我保留了一个过时的webpack(和/或webpack-cli,我只是批量处理它们)版本。我碰巧使用的是webpack.config.babel.js 的 Webpack 配置文件。 Webpack 似乎在内部使用babel-register 处理这个问题(参见this SO answer)。我的 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 正在调用babel-register——我认为它的版本是由webpack-cli 的过时版本决定的——导致它以比我安装的更旧版本的@babel/babel-core 为目标。

              解决方案

              我卸载了webpackwebpack-cli 软件包,删除了我的node_modules/package-lock.json,然后重新创建了npm install

              如果这不能立即起作用,我建议按照错误中包含的建议进行操作:

              错误:需要 Babel "^7.0.0-0",但加载的是 "6.26.3"。如果你确定你有一个兼容的@babel/core 版本,很可能你的构建过程中加载了错误的版本。检查此错误的堆栈跟踪以查找第一个未提及“@babel/core”或“babel-core”的条目,以查看调用 Babel 的内容。

              查明导致(最有可能)依赖项不匹配的原因。我还建议删除package.jsondependencies(和/或devDependencies)中的条目,然后在npm 默认版本中重新安装它们,直到它们相互配合。剥离非必要的依赖项并重置默认依赖项最终应该会奏效。

              【讨论】:

              • 对于碰巧正在升级使用webpack.config.babel.js 的古董包设置的其他人的旁注:babel-register 似乎已包含在旧版本的webpack 或@987654343 中@,但在更新的版本中被删除。这会导致webpack-cli 抱怨“无法为“.babel.js”使用指定的模块加载器。”在这种情况下,只需安装 @babel/register
              【解决方案11】:

              我不小心在我的根目录中有一个名为 .babelrc 的文件,其内容如下:

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

              删除该文件后,运行gulp 命令时不再出现此错误。

              【讨论】:

                【解决方案12】:

                有时,您有一个本地版本,因此请删除它以便运行全局版本:

                npm uninstall babel-cli
                npm uninstall babel-core
                

                【讨论】:

                  【解决方案13】:
                  • 删除节点模块。
                  • 将您的 devdepdencies 更新为
                  "devDependencies": {
                        "@babel/core": "^7.13.10",
                        "babel-core": "^7.0.0-bridge.0",
                        ........
                  }
                  
                  • npm 安装

                  【讨论】:

                    【解决方案14】:
                    1. 删除node_modules
                    2. 将 devDependencies 更新为:
                    "devDependencies": {
                          "@babel/core": "^7.13.10",
                          "babel-core": "^7.0.0-bridge.0",
                    }
                    
                    1. 再次安装 npm:
                      npm install

                    【讨论】:

                    • 这是一个 重复 答案,因此可能会被删除(KushalSeth 的 RE 答案)。欢迎来到 SO。 SO 平台有一些您可能不知道的独特规则:有用的答案应该被赞成,而不是重复,以便 SO 按预期工作。这是与论坛不同的格式。您可以在 StackOverflow.com/help 阅读更多内容。
                    猜你喜欢
                    • 1970-01-01
                    • 2019-06-06
                    • 2019-10-30
                    • 2019-04-18
                    • 2019-05-13
                    • 1970-01-01
                    • 2019-08-09
                    • 2019-05-18
                    • 1970-01-01
                    相关资源
                    最近更新 更多