在React应用中运行npm start时出现babel-jest依赖问题

时间:2018-10-31 17:34:36

标签: reactjs macos npm yarnpkg react-scripts

我正在做的是运行create-react-app并cd进入该应用程序,然后尝试运行npm/yarn start。我得到以下错误/输出/日志。我已经完成了所有建议的步骤。唯一有效的方法是在我的.env文件中将SKIP_PREFLIGHT_CHECK = true作为两者的最后手段 纱线和npm。我最近更新到Mojave,如果人们有类似的经历,就不得不重新安装Xcode。

如果图像不够,我将输出粘贴到下面。

非常感谢您的帮助...杰森

控制台屏幕截图screenshot

Last login: Tue Oct 30 16:30:24 on ttys002
TheLAB11:~ jasonspiller$ cd repos/react-express-graphql-app/
TheLAB11:react-express-graphql-app jasonspiller$ npm start

> react-express-graphql-app@0.1.0 start /Users/jasonspiller/repos/react-express-graphql-app
> react-scripts start


There might be a problem with the project dependency tree.
It is likely not a bug in Create React App, but something you need to fix locally.

The react-scripts package provided by Create React App requires a dependency:

  "babel-jest": "23.6.0"

Don't try to install it manually: your package manager does it automatically.
However, a different version of babel-jest was detected higher up in the tree:

  /Users/jasonspiller/node_modules/babel-jest (version: 23.4.2) 

Manually installing incompatible versions is known to cause hard-to-debug issues.

If prefer to ignore this check, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
That will permanently disable this message but you might encounter other issues.

To fix the dependency tree, try following the steps below in the exact order:

  1. Delete package-lock.json (not package.json!) and/or yarn.lock in your project folder.
  2. Delete node_modules in your project folder.
  3. Remove "babel-jest" from dependencies and/or devDependencies in the package.json file in your project folder.
  4. Run npm install or yarn, depending on the package manager you use.

In most cases, this should be enough to fix the problem.
If this has not helped, there are a few other things you can try:

  5. If you used npm, install yarn (http://yarnpkg.com/) and repeat the above steps with it instead.
     This may help because npm has known issues with package hoisting which may get resolved in future versions.

  6. Check if /Users/jasonspiller/node_modules/babel-jest is outside your project directory.
     For example, you might have accidentally installed something in your home folder.

  7. Try running npm ls babel-jest in your project folder.
     This will tell you which other package (apart from the expected react-scripts) installed babel-jest.

If nothing else helps, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
That would permanently disable this preflight check in case you want to proceed anyway.

P.S. We know this message is long but please read the steps above :-) We hope you find them helpful!

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! react-express-graphql-app@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the react-express-graphql-app@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/jasonspiller/.npm/_logs/2018-10-30T23_09_42_358Z-debug.log

19 个答案:

答案 0 :(得分:9)

我只是遇到了同样的问题。由于某种原因,该软件包最终出现在我的主目录的node_modules目录中。对于jest软件包,它也给了我完全相同的错误。

我不确定将其修复为npm uninstall -g babel-jestyarn global remove babel-jest不会执行任何操作的正确方法。

我通过吹走引起问题的文件夹来修复它: bash rm -rf ~/node_modules/babel-jest ~/node_modules/jest

很高兴知道这些软件包是如何结束的,以及摆脱它们的正确方法,但是就目前而言,仅删除文件夹就足以使CRA dev服务器运行,而无需跳过预检检查。

答案 1 :(得分:9)

该问题似乎在create-react-app 3.0.0中再次出现。

The react-scripts package provided by Create React App requires a dependency:

  "babel-jest": "24.7.1"

正如abisuq在https://github.com/facebook/create-react-app/issues/6756#issuecomment-489562571中指出的那样,在package.json中添加版本解析可以暂时解决该问题

"resolutions": {
  "babel-jest": "24.7.1"
},

更新:它已在create-react-app 3.0.1中修复。 如果可以选择升级,则可以运行

npm install --save --save-exact react-scripts@3.0.1

yarn add --exact react-scripts@3.0.1

答案 2 :(得分:7)

如果运行应用程序的文件夹的父目录中没有node_modules,则可能会出现此问题。我通过删除node_modules目录解决了这个问题。

答案 3 :(得分:2)

  1. 运行: npm ls babel-jest

忘了:安装了babelk-jest@24.7.1和babel-jest@24.8.0

这意味着安装带有差异版本的拖曳babel-jest

  1. 运行: npm卸载babel-jest@24.8.0 解决我的问题

答案 4 :(得分:2)

我通过从高于项目根目录的文件夹中删除node_modules文件夹和package-lock.json文件来解决此问题。我不小心在较高的文件夹中安装了node_modules。

我有:

  • desktop / code / node_modules(删除此问题即可修复)
  • desktop / code / package-lock.json(删除此问题即可修复)
  • 桌面/代码/项目/ node_modules
  • desktop / code / project / package-lock.json

答案 5 :(得分:1)

好吧,我尝试了一切之后终于找到了解决方案。这是最终有效的方法:

  • 首先,从头开始读取cmd中的错误消息。他们会告诉您哪个模块导致了问题。您可能在计算机上安装了旧版本。示例:babel-jest版本2.4.4
  • 转到您的Node.js文件夹c:/ Users /(您的用户)/ node_modules,找到该模块并将其删除。
  • 返回到cmd并运行npm start。您可能会遇到相同的错误。但这将用于其他模块。只需以相同的方式删除它并重复直到它运行即可。

答案 6 :(得分:1)

我也遇到了这个问题。当我尝试使用 npm start 运行客户端时,会发生错误,告诉我它需要 babel-jest: ^24.9.0。

我注意到在我的客户端中,babel-jest 的版本是 ^24.9.0,但在我的服务器中,我有“jest”:“^26.6.3”。

我所要做的就是将服务器端源代码中的 "jest": "^26.6.3" 更改为 "jest": "^24.9.0",删除我的 package-lock.json 以及 node_modules 中的服务器,再次安装 npm,一切顺利!

答案 7 :(得分:0)

这对我有用。 清除 npm 或 yarn 中的缓存 删除 node_modules 并锁定文件

  • 创建 .env 文件
  • 将“SKIP_PREFLIGHT_CHECK=true”添加到项目中的 .env 文件中。

答案 8 :(得分:0)

在 netlify ci 中出现此错误,这是对我有用的修复程序: 此方法适用于任何库,我在 eslint 而不是 babel-jest 时遇到错误。

  1. 强制通过 npm i -s @babel-jest/VERSION --force 显示错误

    用错误中显示的任何版本替换 VERSION(在本例中为 23.6.0), 正确的错误信息将在本地显示

  2. 使用 https://www.npmjs.com/package/npm-check-updates 升级你的 package.json flie 到正确的版本

    <块引用>

    安装 npm 包后在 package.json 目录下运行 ncu -u 全球

  3. 最后做一个 npm ci

    这将删除 package-lock 和 node_modules 并根据第二步安装新版本

答案 9 :(得分:0)

我的 react-scripts 版本是 4.0.3。安装一个私有远程包后突然出现问题,该包在我的项目根目录的node_modules中安装了多个babel包。我通过在项目根目录级别明确安装有问题的包来解决这个问题,以便它们与预检中报告的版本相匹配。

在我的情况下,以下添加修复了它。您需要的软件包和版本可能有所不同,您必须查看预检报告。

yarn add babel-jest@^26.6.0
yarn add babel-loader@8.1.0

对我来说,它仍然是一种解决方法,但我更喜欢这种方式,而不是按照 https://stackoverflow.com/a/53093421/4840661 中的建议手动删除 node_modules 中的某些内容。

答案 10 :(得分:0)

我尝试了上述所有书面解决方案。但他们都没有工作。 我通过删除“C:\node_modules”文件夹解决了问题。 然后删除项目 node_modules 和 package-lock.json。最后, npm install 并重新启动。它奏效了。

答案 11 :(得分:0)

尝试此命令,查看哪些软件包在版本中造成冲突。

npm ls babel-jest

用更新的软件包之一替换有冲突的软件包。

答案 12 :(得分:0)

我通过删除项目目录中的node_module文件夹来解决此问题

答案 13 :(得分:0)

我通过删除意外安装在用户根目录中的node_modules文件夹和package-lock.json文件解决了此问题。

在Mac上,对于我来说,路径是:

Macintosh HD->用户->“我的用户名”

我发现在终端上运行npm ls babel-jest可能是问题所在。那告诉我树上还有另一个通货膨胀的玩笑。

删除这两个后,我将npm安装在我以前删除了node_modules文件夹和package-lock.json的应用中。

现在运行正常!

答案 14 :(得分:0)

我遇到了同样的问题,并且解决了这个问题。由于某种原因,因为node_modules在我的本地。我删除了babel-jest和jest。之后,npm开始。我不确定这解决了不正确,但是对我来说正确。

答案 15 :(得分:0)

我也遇到了类似的问题,并且可以按照以下步骤解决该问题。

  1. 在项目根目录中创建一个.env文件,并添加以下语句
  

SKIP_PREFLIGHT_CHECK = true

  1. 保存文件

  2. 删除node_modules,yarn.lock,package.lock

  3. 然后使用

  4. 重新安装node_modules
  

npm安装

这应该有效

答案 16 :(得分:0)

我遇到了这个问题,终于轻松解决了。 也许您知道,当我们使用create-react-app时,默认情况下配置了Jest,并且您不需要安装Jest(使用Webpack时,我们可以安装Jest)。因此,如果您使用Create-react-app并错误地安装了Jest:

  1. 首先将其卸载(请记住,如果您使用:(npm install --save-dev jest),则可以直接从Package.json中删除玩笑或使用:(npm uninstall --save-dev jest
  2. 删除package-lock.json(不是package.json)
  3. 删除node_modules
  4. npm install

现在您不会收到任何错误,可以轻松使用:(npm开始)或(npm测试)

另外,值得一提的是,我安装了以下工具以在React组件中编写测试: (npm install --save-dev enzyme enzyme-adapter-react-16 jest-enzyme) 然后用玩笑和酵素写了我的测试然后,我轻松使用:(npm test

祝你好运!

答案 17 :(得分:0)

我遇到了完全相同的问题。 我试图在具有node_modules文件夹的目录外部创建react应用程序。 之后,使用yarn start启动应用程序,不再出现错误。

答案 18 :(得分:-1)

这是不删除 node_modules 的方法:

  • 我收到如下错误:
<块引用>

Create React App 提供的 react-scripts 包需要一个依赖: “开玩笑”:“26.6.0” 不要尝试手动安装它:您的包管理器会自动安装。 但是,在树的更高处检测到了不同版本的笑话:

  • 首先使用以下方法检查版本:

    npm ls babel-jest

    在我的例子中,输出是这样的:

<块引用>

jest@27.0.3
└─┬ @jest/core@27.0.3
└─┬ jest-config@27.0.3
└── babel-jest@27.0.2

  • 之后通过
    卸载babel-jest npm uninstall babel-jest
    (当你看到babel-jest的单一版本时,否则按如下版本走)
    npm uninstall babel-jest@27.0.2

  • 然后使用
    安装所需的依赖项 npm i babel-jest@version jest@version
    (第 1 点的版本是哪里)

这对我来说就像一种魅力。希望这也能解决你。