无法从“ReactTestUtils.js”中找到module“react/lib/React”

IT技术 javascript node.js reactjs
2021-05-26 05:38:57

我正在尝试使用 ReactTestUtils 为react本机项目设置单元测试但是我在运行 npm test 时收到此错误:

Cannot find module 'react/lib/React' from 'ReactTestUtils.js'

我感觉我的依赖项不能正常工作,但我找不到原因。我已经尝试过降级 react 版本,但这并不能解决我的问题并调整 react-dom 版本,但我似乎无法找到黄金组合。

有谁知道这是否是一个已知问题?我无法在这里找到任何关于此的文档,在 react 文档中也找不到。

这是我的 package.json 配置:

    "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "jest --watch"
  },
  "dependencies": {
    "react-native-scripts": "0.0.40",
    "expo": "18.0.3",
    "react": "16.0.0-alpha.12",
    "react-native": "0.45.1",
    "react-navigation": "1.0.0-beta.11"
  },
  "devDependencies": {
    "enzyme": "^2.9.1",
    "jest": "19.0.2",
    "jest-expo": "~18.0.0",
    "react-addons-test-utils": "^15.6.0",
    "react-dom": "^15.6.1",
    "react-test-renderer": "^16.0.0-alpha.12"
  },
  "jest": {
    "preset": "react-native",
    "collectCoverage": true,
    "coverageDirectory": "__coverage__",
    "testRegex": "./__tests__/[^setup].*.js$",
    "transformIgnorePatterns": [
      "node_modules/(?!react-native|native-base|react-navigation|react-native-fabric)"
    ],
    "setupFiles": [
      "./__tests__/setup.js"
    ]
  }
2个回答

你混淆了 React (web) 和 React-Native。

ReactTestUtils 是为 React 制作的,不适用于 React-Native。因此,您需要在其他地方寻找 React-Native 的单元测试。此外,您应该从项目中删除 React 作为依赖项。

我在这里看到的问题是您同时依赖于react 16 和 15。react/lib/* 中的内部结构在 react 16 中已经完全改变,因此无法兼容。您应该使用所有内容来 react(-*) 16 或 15,但不能将两者混合使用。

最新的 Jest 和酶 (v3) 现在完全兼容刚刚发布的 react 16!