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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:02:42