You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:01:00