微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Jest 修复 React App 依赖错误

如何解决如何使用 Jest 修复 React App 依赖错误

所以我在一个新项目中安装了 Jest,但由于以下错误,该应用停止运行。

摘要它告诉我我手动安装了对 node_modules 的依赖项,这是我没有做的事情,它要求我删除整个 node_modulesyarn.lock。但这些步骤不起作用。

注意:package.json删除依赖项,然后删除 node_modulesyarn.lock 确实可以解决问题,但是当我再次安装 jest 时,它落入了同样的问题。

我安装 jest 的步骤,here

$ yarn add --dev react-test-renderer
$ yarn add --dev jest babel-jest @babel/preset-env @babel/preset-react react-test-renderer

错误信息

$ 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:

  "jest": "26.6.0"

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

  C:\WORK\plotting-a-chart\node_modules\jest (version: 26.6.3)

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

If you would 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 "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 C:\WORK\plotting-a-chart\node_modules\jest is outside your project directory.
     For example,you might have accidentally installed something in your home folder.

  7. Try running npm ls jest in your project folder.
     This will tell you which other package (apart from the expected react-scripts) installed 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!

我尝试了所有步骤,我已经使用了 yarn,我什至在执行步骤 1 到 4 之前清除了我的纱线缓存。

  1. 删除项目文件夹中的 package-lock.json(不是 package.json!)和/或 yarn.lock
  2. 删除项目文件夹中的node_modules
  3. 从项目文件夹的 package.json 文件中的依赖项和/或 devDependencies 中删除“jest”;
  4. 运行 npm install 或 yarn,具体取决于您使用的包管理器。

我没有想法了。

// package.json
{
  "name": "project","version": "0.1.0","private": true,"dependencies": {
    "@testing-library/react": "^11.1.0","@testing-library/user-event": "^12.1.10","node-sass": "^5.0.0","prismjs": "^1.23.0","react": "^17.0.1","react-dom": "^17.0.1","react-hook-form": "^6.15.5","react-icons": "^4.2.0","react-resizable": "^1.11.1","react-scripts": "4.0.3","react-vis": "^1.11.7"
  },"scripts": {
    "dev": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject","unit": "jest"
  },"eslintConfig": {
    "extends": [
      "react-app"
    ]
  },"browserslist": {
    "production": [
      ">0.2%","not dead","not op_mini all"
    ],"development": [
      "last 1 chrome version","last 1 firefox version","last 1 safari version"
    ]
  },"devDependencies": {
    "@babel/preset-env": "^7.13.12","@babel/preset-react": "^7.13.13","babel-jest": "^26.6.3","babel-plugin-root-import": "^6.6.0","jest": "^26.6.3","react-test-renderer": "^17.0.2"
  }
}
// babel.config.js
module.exports = {
   presets: ['@babel/preset-env','@babel/preset-react'],};

解决方法

你不必 npm install jest。你的错误告诉你:

不要尝试手动安装。

这是react documentation上的内容

如果您使用 Create React App,开箱即用的 Jest 已经包含在内 具有有用的默认值。

要解决您的问题,您应该运行:

npm uninstall --save-dev jest
npm uninstall --save jest
rm node_modules 
npm i

,

我确实通过在项目文件夹中创建一个 .env 文件并使用 SKIP_PREFLIGHT_CHECK=true 解决了这个问题,现在测试运行器似乎运行良好。

,

当我遇到这个问题时,我使用堆栈跟踪来弄清楚它正在寻找什么版本的笑话。然后我纱线将其删除并重新安装它想要的版本。为了安全起见,我会执行它建议的整个过程,但请确保安装它要求的版本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。