@testing-library/react与最新依赖兼容问题:找不到react-dom/client模块
测试报错:找不到'react-dom/client'模块
报错内容:
Cannot find module 'react-dom/client' from 'node_modules/@testing-library/react/dist/pure.js'
触发报错的代码行:
import { render } from '@testing-library/react';
当前用到的所有依赖均为最新版本:
- @testing-library/react
- react
- @types/react
- react-dom
- @types/react-dom
- jest
- @types/jest
- ts-jest
解决办法
出现这个错的原因很直接:最新版的@testing-library/react默认依赖React 18新增的react-dom/client API,但如果你的项目实际用的是React 17及更早版本,就会找不到这个模块。
方案1:降级测试库到兼容版本
如果项目暂时没法升级到React 18,直接安装适配旧版本React的@testing-library/react即可:
npm install @testing-library/react@12 --save-dev # 用yarn的话 yarn add @testing-library/react@12 --dev
12版本的测试库适配React 17及更早版本,不会调用react-dom/client相关API。
方案2:升级项目适配React 18
如果项目可以升级到React 18(你已经安装了最新版的react和react-dom,大概率已经是18版本),只需确认项目入口文件是否改成React 18的渲染方式:
检查index.tsx/index.jsx,把原来的ReactDOM.render写法替换为:
import { createRoot } from 'react-dom/client'; const root = createRoot(document.getElementById('root')!); root.render(<App />);
改完后测试环境就能正确识别模块。
方案3:检查TypeScript配置
如果是TS项目,确认tsconfig.json里的moduleResolution设置为node,确保模块解析路径正确:
{ "compilerOptions": { "moduleResolution": "node" } }
内容的提问来源于stack exchange,提问作者Kirk Strobeck
相关产品推荐
相关产品推荐

