在Create React App项目中安装本地库后测试用例报错求助
解决Create React App测试本地组件库时的React导入错误
我之前碰到过几乎一模一样的问题,大概率是你的本地共享组件库(local-lib)的React依赖配置出了问题,导致测试运行时出现了重复的React实例,触发了这个导入错误。下面是一步步的解决办法:
1. 修正本地组件库的依赖配置
问题核心是本地库把react和react-dom放在了dependencies里,而不是peerDependencies。这样主项目安装本地库时,会在本地库的node_modules里再装一份React,测试时就会出现两个React实例冲突。
- 打开本地库(
../local-lib)的package.json - 把
react和react-dom从dependencies移动到peerDependencies,并指定和主项目匹配的版本范围,示例如下:
"peerDependencies": { "react": "^16.13.1", "react-dom": "^16.13.1" }
- 删除本地库的
node_modules和锁文件,重新安装依赖:
rm -rf node_modules package-lock.json npm install
2. 重新在主项目中安装本地库
如果之前是通过本地路径安装的local-lib,需要重新安装确保主项目使用自身的React实例:
npm uninstall local-lib npm install ../local-lib
3. 调整主项目的Jest配置(可选但推荐)
为了让Jest明确优先使用主项目的React,你可以在主项目的package.json的jest字段里添加模块映射:
"jest": { // ... 你的现有配置 "moduleNameMapper": { "^react$": "<rootDir>/node_modules/react", "^react-dom$": "<rootDir>/node_modules/react-dom" } }
额外排查步骤
- 检查本地组件库的构建配置(比如rollup或webpack),确保
externals里包含了react和react-dom,这样构建产物不会把React打包进去 - 最后可以清理主项目的依赖,彻底排除冲突:
rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者Gajen
相关产品推荐
相关产品推荐

