React + Node 应用程序中的 babel-jest 版本冲突
babel-jest version conflict in react + node application
我正在尝试 运行 在我的应用程序的服务器端进行 jest 测试,但是 babel-jest 版本与 React 的 babel-jest 版本冲突。
当我 运行 我的应用程序出现此错误时。
当我这样做时 'npm ls babel-jest' 我明白了
babel-jest@24.9.0
-- jest@26.0.1
--@jest/core@26.0.1
-- jest-config@26.0.1
-- babel-jest@26.0.1
按照错误输出给你的所有步骤,但是而不是给定的第 3 步(从依赖项中删除它),这样做:
- go into
package.json
, locate jest
in dependencies
and/or devDependencies
, and replace the version number you find with 24.9.0
cmds-ui-operations@0.1.2 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations
+-- react-scripts@3.4.1
| +-- babel-jest@24.9.0
| `-- jest@24.9.0
| `-- jest-cli@24.9.0
| `-- jest-config@24.9.0
| `-- babel-jest@24.9.0 deduped
`-- ts-jest@26.4.3
`-- jest@26.6.1
`-- @jest/core@26.6.1
`-- jest-config@26.6.1
`-- babel-jest@26.6.1
[32;1m$ npm run build[0;m
cmds-ui-operations@0.1.2 build
react-scripts build
项目依赖树可能有问题。
这可能不是 Create React App 中的错误,而是您需要在本地修复的错误。
Create React App提供的react-scripts包需要依赖:
"babel-jest": "^24.9.0"
不要尝试手动安装:您的包管理器会自动安装。
但是,在树的较高位置检测到 babel-jest 的不同版本:
/builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest(版本:26.6.1)
已知手动安装不兼容的版本会导致 hard-to-debug 问题。
如果您希望忽略此检查,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。
这将永久禁用此消息,但您可能会遇到其他问题。
要修复依赖关系树,请尝试按确切顺序执行以下步骤:
- 删除项目文件夹中的 package-lock.json(不是 package.json!)and/or yarn.lock。
- 删除项目文件夹中的 node_modules。
- 从项目文件夹的 package.json 文件中的依赖项 and/or devDependencies 中删除“babel-jest”。
- 运行 npm install 或 yarn,取决于您使用的包管理器。
在大多数情况下,这应该足以解决问题。
如果这没有帮助,您可以尝试其他一些方法:
如果您使用 npm,请安装 yarn (http://yarnpkg.com/) 并用它重复上述步骤。
这可能会有所帮助,因为 npm 有已知的包提升问题,这些问题可能会在未来的版本中得到解决。
检查 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest 是否在您的项目目录之外。
例如,您可能不小心在主文件夹中安装了一些东西。
在项目文件夹中尝试 运行 npm ls babel-jest。
这将告诉您安装了哪个其他软件包(除了预期的 react-scripts)babel-jest。
如果没有其他帮助,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。
如果您仍然想继续,那将永久禁用此预检检查。
对于将来遇到此问题的任何人 - 我 运行 在服务器文件夹中安装 Jest 时遇到了同样的问题,其中包含由 CRA 创建的嵌套客户端。我的解决方案是匹配 CRA 在我的服务器端安装的 Jest 版本 package.json.
就我而言,在客户端我使用的是:
“反应脚本”:“4.0.3”
它具有以下依赖性:
“开玩笑”:“26.6.0”
所以在服务器中 package.json 我需要相同版本的 jest。删除了服务器 node_modules & package-lock 并做了干净的 npm 安装。
现在服务器和客户端都使用相同版本的 jest(和嵌套的 deps)。
我正在尝试 运行 在我的应用程序的服务器端进行 jest 测试,但是 babel-jest 版本与 React 的 babel-jest 版本冲突。
当我 运行 我的应用程序出现此错误时。
当我这样做时 'npm ls babel-jest' 我明白了
babel-jest@24.9.0
-- jest@26.0.1
--@jest/core@26.0.1
-- jest-config@26.0.1
-- babel-jest@26.0.1
按照错误输出给你的所有步骤,但是而不是给定的第 3 步(从依赖项中删除它),这样做:
- go into
package.json
, locatejest
independencies
and/ordevDependencies
, and replace the version number you find with24.9.0
cmds-ui-operations@0.1.2 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations
+-- react-scripts@3.4.1
| +-- babel-jest@24.9.0
| `-- jest@24.9.0
| `-- jest-cli@24.9.0
| `-- jest-config@24.9.0
| `-- babel-jest@24.9.0 deduped
`-- ts-jest@26.4.3
`-- jest@26.6.1
`-- @jest/core@26.6.1
`-- jest-config@26.6.1
`-- babel-jest@26.6.1
[32;1m$ npm run build[0;m
cmds-ui-operations@0.1.2 build react-scripts build
项目依赖树可能有问题。 这可能不是 Create React App 中的错误,而是您需要在本地修复的错误。
Create React App提供的react-scripts包需要依赖:
"babel-jest": "^24.9.0"
不要尝试手动安装:您的包管理器会自动安装。 但是,在树的较高位置检测到 babel-jest 的不同版本:
/builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest(版本:26.6.1)
已知手动安装不兼容的版本会导致 hard-to-debug 问题。
如果您希望忽略此检查,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。 这将永久禁用此消息,但您可能会遇到其他问题。
要修复依赖关系树,请尝试按确切顺序执行以下步骤:
- 删除项目文件夹中的 package-lock.json(不是 package.json!)and/or yarn.lock。
- 删除项目文件夹中的 node_modules。
- 从项目文件夹的 package.json 文件中的依赖项 and/or devDependencies 中删除“babel-jest”。
- 运行 npm install 或 yarn,取决于您使用的包管理器。
在大多数情况下,这应该足以解决问题。 如果这没有帮助,您可以尝试其他一些方法:
如果您使用 npm,请安装 yarn (http://yarnpkg.com/) 并用它重复上述步骤。 这可能会有所帮助,因为 npm 有已知的包提升问题,这些问题可能会在未来的版本中得到解决。
检查 /builds/ielts-cmds/IELTS-CMDS-ui-grp/cmds-ui-operations/node_modules/babel-jest 是否在您的项目目录之外。 例如,您可能不小心在主文件夹中安装了一些东西。
在项目文件夹中尝试 运行 npm ls babel-jest。 这将告诉您安装了哪个其他软件包(除了预期的 react-scripts)babel-jest。
如果没有其他帮助,请将 SKIP_PREFLIGHT_CHECK=true 添加到项目中的 .env 文件中。 如果您仍然想继续,那将永久禁用此预检检查。
对于将来遇到此问题的任何人 - 我 运行 在服务器文件夹中安装 Jest 时遇到了同样的问题,其中包含由 CRA 创建的嵌套客户端。我的解决方案是匹配 CRA 在我的服务器端安装的 Jest 版本 package.json.
就我而言,在客户端我使用的是: “反应脚本”:“4.0.3”
它具有以下依赖性: “开玩笑”:“26.6.0”
所以在服务器中 package.json 我需要相同版本的 jest。删除了服务器 node_modules & package-lock 并做了干净的 npm 安装。
现在服务器和客户端都使用相同版本的 jest(和嵌套的 deps)。