无法创建React Native 0.69.1项目 升级npm依赖报错如何解决
问题根因
这是升级React Native时最常见的peer依赖版本冲突:React Native 0.69.1 强制要求匹配 React 18.0.0 版本,但官方的npx react-native upgrade脚本不会自动同步更新react-test-renderer这类开发依赖的版本,项目里残留的react-test-renderer@17.0.2强依赖React 17.0.2,和当前项目安装的React 18.0.0版本号不匹配,直接触发npm的ERESOLVE报错,中断安装流程。
分步解决方法
按顺序执行以下操作即可完成升级:
- 先手动修正核心依赖版本:打开项目根目录的
package.json文件,核对并修改以下字段的版本号:dependencies.react固定为18.0.0dependencies.react-native固定为0.69.1devDependencies.react-test-renderer改成和react完全一致的版本,也就是18.0.0
- 清理旧依赖残留:在项目根目录执行命令,删掉之前安装失败留下的缓存文件
# Mac/Linux系统执行 rm -rf node_modules package-lock.json# Windows系统cmd/powershell执行 rd /s /q node_modules del package-lock.json - 重新安装依赖,执行命令时带上兼容参数跳过严格的peer依赖校验:
这个参数不会像npm install --legacy-peer-deps--force一样强制覆盖依赖版本导致隐性兼容问题,只会暂时放宽校验规则,允许项目里装的第三方原生库(比如用到的react-native-call-detection、react-native-get-sms-android)还没更新适配RN0.69.1的情况下正常完成安装,这类库绝大多数在0.69版本上都能直接运行,不需要额外修改。 - 执行升级补全脚本,把安卓、iOS原生目录下的配置文件同步到0.69.1版本:
执行过程中如果弹出文件冲突提示,没有自定义修改过的原生文件直接选覆盖即可,自己改过的文件就手动合并原有修改再继续。npx react-native upgrade --legacy-peer-deps - 最后做启动校验:安卓端执行
npx react-native run-android、iOS端先进入ios目录执行pod install --repo-update再执行npx react-native run-ios,项目能正常启动就说明升级完成。
注意事项
- 不要使用
npm install --force强制安装,会破坏依赖树的版本匹配关系,后续大概率会出现原生端启动崩溃、API调用报错等很难排查的问题。 - 如果升级后启动报Metro相关错误,先执行
npx react-native start --reset-cache清下缓存再启动即可。
内容的提问来源于stack exchange,提问作者Muhammad Asim
相关产品推荐
相关产品推荐

