首页 > 解决方案 > react-scripts jest 27 版本依赖错误

问题描述

我想开始使用框架 jest 和酶来测试我的 React 组件。我正在用 Typescript 编写代码。所以我安装了类似的软件包:jest、酵素、enzyme-adapter-react-16、ts-jest 和 typescript 类型所需的依赖项。下面我展示了整个 package.json 文件:

{
  "name": "test-learning-with-redux",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "@types/node": "^12.20.16",
    "@types/react": "^17.0.14",
    "@types/react-dom": "^17.0.9",
    "node-sass": "^6.0.1",
    "react": "^16.14.0",
    "react-dom": "^16.14.0",
    "react-scripts": "4.0.3",
    "web-vitals": "^1.1.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "jest --watch",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@types/enzyme": "^3.10.9",
    "@types/enzyme-adapter-react-16": "^1.0.6",
    "@types/jest": "^26.0.24",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.6",
    "enzyme-to-json": "^3.6.2",
    "jest": "^27.0.6",
    "jest-enzyme": "^7.1.2",
    "ts-jest": "^27.0.3",
    "typescript": "^4.3.5"
  }
}

问题是安装后依赖项测试工作正常,但反应服务器不起作用。我可以在下面的屏幕上观察到错误:

在此处输入图像描述

当然我可以通过添加 .env 来解决这个问题:SKIP_PREFLIGHT_CHECK=true 并且它可以工作,但我不确定它是否是最好的解决方案。

另一方面,如果我通过键入npm uinstall jest删除与 jest 的依赖关系,则 jest 将不起作用并且会出现错误:TypeError: Jest: a transform must export a processfunction。更多在下面的屏幕上:

在此处输入图像描述

下面我展示 jest.config.js 配置文件:

My module.exports = {
    "roots": [
        "<rootDir>/src"
    ],
    "transform": {
        "^.+\\.tsx?$": "ts-jest"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
    "moduleFileExtensions": [
        "ts",
        "tsx",
        "js",
        "jsx",
        "json",
        "node"
    ],
    "snapshotSerializers": ["enzyme-to-json/serializer"],
    "setupFilesAfterEnv": ["<rootDir>/src/setupEnzyme.ts"],
}

为了同时使用 jest 和 typescript 正常工作,解决这个问题的最佳方法是什么?我可以观察到一些评论,人们写了关于通过react-scripts强制从不版本,但我不知道该怎么做。也许最好保留来自react-scripts的版本并以某种方式解决我上面提到的jest中的TypeError但是如何?

我会很高兴得到建议和介词。

标签: reactjstypescriptjestjs

解决方案


推荐阅读