React Native初始化新项目报ERESOLVE依赖冲突错误如何解决
问题复现
执行以下命令初始化新项目时触发报错:
npx react-native init AwesomeProject
核心报错信息如下:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR! While resolving: undefined@undefined
npm ERR! Found: react-native@0.68.2
npm ERR! node_modules/react-native
npm ERR! peer react-native@"*" from @react-native-community/cli@7.0.3
npm ERR! node_modules/@react-native-community/cli
npm ERR! @react-native-community/cli@"^7.0.3" from react-native@0.68.2
npm ERR! react-native@"0.69.0" from the root project
npm ERR! Could not resolve dependency:
npm ERR! react-native@"0.69.0" from the root project
npm ERR! Conflicting peer dependency: react@18.0.0
npm ERR! node_modules/react
npm ERR! peer react@"18.0.0" from react-native@0.69.0
npm ERR! node_modules/react-native
npm ERR! react-native@"0.69.0" from the root project
npm ERR! Fix the upstream dependency conflict, or retry this command with --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
报错原因
npm 7.x及以上版本默认开启严格的peer依赖校验,本次报错是版本匹配错位导致:初始化流程拉取到的根项目模板指定要安装react-native@0.69.0(要求配套react@18.0.0),但本地调用的@react-native-community/cli是7.0.3版本,该版本对应的适配react-native版本为0.68.2,两套依赖链版本不匹配,直接触发解析失败。
修复方案
按优先级从高到低选择对应方案即可:
- 方案1:对齐版本初始化(正式项目推荐,无兼容隐患)
要么直接指定和当前cli适配的稳定版初始化,执行命令:
如果确实需要使用0.69.0版本,先升级全局cli到适配0.69的8.x版本,再执行初始化:npx react-native init AwesomeProject --version 0.68.2# 卸载旧版全局cli npm uninstall -g @react-native-community/cli react-native # 安装适配RN0.69的cli版本 npm install -g @react-native-community/cli@8.0.0 # 重新执行初始化 npx react-native init AwesomeProject - 方案2:临时跳过依赖校验(仅适合测试demo场景)
只是快速搭建测试项目的话,可以加--legacy-peer-deps参数让npm忽略peer依赖校验,不要用--force参数,后者会强制覆盖依赖,更容易引发隐性问题:npx react-native init AwesomeProject --npm --legacy-peer-deps - 方案3:清理缓存解决残留问题
部分场景是npm本地缓存了旧版本的依赖元信息导致解析错乱,先执行缓存清理再重试:
清理完成后重新执行初始化命令即可。npm cache clean --force
注意:如果初始化完成后运行项目出现react与react-native版本不匹配的红屏报错,直接修改package.json里的react版本为当前RN版本要求的固定对应版本,删除node_modules文件夹和package-lock.json文件后重新执行npm install即可。
内容的提问来源于stack exchange,提问作者Nimisha geek

