npm monorepo中Jest测试报ReactCurrentOwner未定义错误排查
React测试中
ReactCurrentOwner未定义问题排查 我维护一个npm monorepo,包含React 18 Web应用、React-Native 0.71/React 18移动应用及共享库,一直通过npm overrides固定React版本。某次依赖更新后,仅其中一个项目运行Jest测试时抛出如下错误:
FAIL hooks/useFoo.test.tsx ● Test suite failed to run TypeError: Cannot read properties of undefined (reading 'ReactCurrentOwner') > 1 | import { create, snapshotOf } from "jest-snapshot-propifier"; | ^ 2 | import { useCallback as useCallbackLib } from "react"; 3 | import { 4 | useDispatch as useDispatchLib, at ReactCurrentOwner (../../node_modules/react-test-renderer/cjs/react-test-renderer.development.js:496:46) at Object.<anonymous> (../../node_modules/react-test-renderer/cjs/react-test-renderer.development.js:18643:4) at Object.require (../../node_modules/react-test-renderer/index.js:6:20) at Object.<anonymous> (hooks/useFoo.test.tsx:1:1)
我能找到的相关解答都是5年前的内容,全部指向React、React-Dom与React-Test-Renderer版本不匹配,但我认为并非如此——至少从npm ls输出的版本树来看,所有相关包版本都是一致的:
$ npm ls react-test-renderer react react-dom ├─┬ @common/lib@1.0.0 -> ./common/lib │ ├─┬ @reduxjs/toolkit@1.9.1 │ │ └── react@18.2.0 deduped │ ├─┬ next-redux-wrapper@8.1.0 │ │ └── react@18.2.0 deduped │ ├─┬ react-dom@18.2.0 │ │ └── react@18.2.0 deduped │ ├── react-test-renderer@18.2.0 deduped │ └── react@18.2.0 ... ├─┬ jest-snapshot-propifier@1.5.4 │ ├── react-test-renderer@18.2.0 deduped │ └── react@18.2.0 deduped └─┬ react-test-renderer@18.2.0 ├─┬ react-shallow-renderer@16.15.0 │ └── react@18.2.0 deduped invalid: "17.0.2" from node_modules/bar //this is from the overrides in my root p.j └── react@18.2.0 deduped
请问这是否和5年前的版本不匹配问题本质相同?如果是,原因是什么?
内容的提问来源于stack exchange,提问作者tallpaul
相关产品推荐
相关产品推荐

