47

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

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
4

21 回答 21

38

我只是有同样的问题。由于某种原因,该软件包最终node_modules位于我的主目录中的一个目录中。它也给了我同样的jest包错误。

我不确定解决此问题的正确npm uninstall -g babel-jest方法,并且yarn global remove babel-jest不做任何事情。

我通过删除导致问题的文件夹来修复它: bash rm -rf ~/node_modules/babel-jest ~/node_modules/jest

很高兴知道这些包是如何结束的,以及摆脱它们的正确方法,但现在只需删除文件夹就足以让 CRA 开发服务器运行而无需跳过预检检查。

于 2018-10-31T23:49:43.860 回答
33

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

于 2018-11-20T18:46:15.503 回答
21

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

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

SKIP_PREFLIGHT_CHECK=真

  1. 保存文件

  2. 移除 node_modules、yarn.lock、package.lock

  3. 然后重新安装 node_modules

npm 安装

这应该工作

于 2019-07-18T07:17:37.423 回答
17

该问题似乎在 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
于 2019-05-09T09:35:15.447 回答
5

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

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

现在您不会收到错误消息,您可以轻松使用:(npm start) 或 (npm test)

另外,值得一提的是,我安装了以下工具来在 React 组件中编写我的测试: ( npm install --save-dev enzyme enzyme-adapter-react-16 jest-enzyme) 并使用 jest 和酶编写了我的测试。然后我很容易使用:(npm test

祝你好运!

于 2019-05-14T02:39:38.353 回答
5

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

  • 首先,从头开始阅读cmd中的错误信息。他们会告诉你是什么模块导致了问题。您的计算机上可能安装了旧版本。示例:babel-jest 版本 2.4.4
  • 转到您的 Node.js 文件夹 c:/Users/(your user)/node_modules 并找到该模块并简单地删除它。
  • 返回 cmd 并运行 npm start。你可能会得到同样的错误。但这将用于不同的模块。只需以相同的方式删除它并重复直到它运行。
于 2019-08-15T23:10:51.350 回答
4
  1. 运行:npm ls babel-jest

得到:安装了 babelk-jest@24.7.1 & babel-jest@24.8.0

这意味着使用 diff 版本安装 tow babel-jest

  1. 运行:<strong>npm uninstall babel-jest@24.8.0 修复我的问题
于 2019-05-05T07:00:32.033 回答
3

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

我有:

  • desktop/code/node_modules(删除此修复)
  • desktop/code/package-lock.json (删除此修复)
  • 桌面/代码/项目/node_modules
  • 桌面/代码/项目/package-lock.json
于 2020-06-13T14:33:39.220 回答
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 以及服务器 npm 中的 node_modules再次安装,一切顺利!

于 2021-01-28T17:16:16.897 回答
0

我有完全相同的问题。我尝试的是在包含 node_modules 文件夹的目录之外创建反应应用程序。之后,使用 yarn start 启动应用程序,不再出现错误。

于 2019-04-04T23:49:02.597 回答
0

我有同样的问题,我解决了这个问题。出于某种原因,因为我本地的 node_modules 。我删除了 babel-jest & jest。之后,npm start。我不确定这解决的不正确,但这对我来说是正确的。

于 2019-09-22T12:06:22.257 回答
0

我通过删除我不小心安装在用户根目录中的 node_modules 文件夹和 package-lock.json 文件解决了这个问题。

对于 Mac 中的我来说,路径是:

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

我通过在终端上运行 npm ls babel-jest 发现这可能是问题所在。这向我表明,树上还有另一个巴别塔。

删除这两个后,我在我的应用程序中执行了 npm install,我之前删除了 node_modules 文件夹和 package-lock.json。

现在运行正常!

于 2020-04-01T15:05:54.763 回答
0

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

于 2020-09-12T12:19:20.033 回答
0

试试这个命令,看看哪些包会在版本中产生冲突。

npm ls babel-jest

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

于 2020-12-01T07:48:38.060 回答
0

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

于 2020-12-30T07:44:06.710 回答
0

我的反应脚本版本是4.0.3. 安装私有远程包后突然出现问题,该包在我的项目根目录下安装了多个 babel 包node_modules。我通过在项目根级别显式安装有问题的包来解决这个问题,以便它们与预检检查中报告的版本相匹配。

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

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

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

于 2021-03-05T15:01:11.003 回答
0

在 netlify ci 中出现此错误,这是对我有用的修复:此方法适用于任何 lib 我遇到了 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 文件

    全局安装 npm 包后,在 package.json 的目录中运行 ncu -u

  3. 最后做一个 npm ci

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

于 2021-07-11T05:56:22.223 回答
0

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

  • 创建 .env 文件
  • 将“SKIP_PREFLIGHT_CHECK=true”添加到项目中的 .env 文件中。
于 2021-08-04T06:48:35.270 回答
0

我的问题是我有同时运行的前端和后端。我将 jest 安装到我的根项目(用于后端),我猜与pre-installed react jest. 我刚刚从后端卸载了 jest,瞧,我现在很高兴。我没有任何与 babel 相关的内容。

于 2022-02-09T19:27:28.143 回答
-1

这是不删除node_modules的方法:

  • 我收到如下错误:

Create React App 提供的 react-scripts 包需要依赖: "jest": "26.6.0" 不要尝试手动安装:你的包管理器会自动安装。但是,在树的较高位置检测到不同版本的 jest:

  • 首先使用以下命令检查版本:

    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
    然后使用(其中版本是第一个点)安装所需的依赖项

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

于 2021-06-01T19:31:47.600 回答
-4

我有类似的问题,浪费了我的 2-3 天解决这个问题的最简单方法是:

1. 到 src 之外,创建 .env 文件。2.在 .env 文件中,只写一行并保存: SKIP_PREFLIGHT_CHECK=true 3.然后 npm start

希望这有帮助,快乐编码!

于 2021-08-23T13:38:13.483 回答