执行npx react-native upgrade升级RN至0.69.1报ERESOLVE依赖错误如何解决
React Native 0.63.4升级触发ERESOLVE依赖树报错解决方案
报错场景
将React Native项目从0.63.4版本升级至最新版本时,执行npx react-native upgrade命令失败,核心报错为npm依赖树解析错误,完整报错信息:
error Command failed: npm install --save --save-exact react-native@0.69.1 react@18.0.0 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! Found: react-native@0.69.1 npm ERR! node_modules/react-native npm ERR! react-native@"0.69.1" from the root project npm ERR! peer react-native@"> 0.57" from @fortawesome/react-native-fontawesome@0.2.7 npm ERR! node_modules/@fortawesome/react-native-fontawesome npm ERR! @fortawesome/react-native-fontawesome@"^0.2.7" from the root project npm ERR! 24 more (@ptomasroos/react-native-multi-slider, ...)
报错根因
这是npm 7及以上版本的严格peer依赖校验机制导致的常见问题:
npm 7之后默认会强制校验所有安装包的peer依赖版本匹配关系,一旦存在版本声明不匹配就会直接中断安装。本次升级跨度较大(从0.63直接升到0.69,同步升级React到18.0.0),项目中已安装的20+三方依赖(包括报错里提到的@fortawesome/react-native-fontawesome、@ptomasroos/react-native-multi-slider等)还没有同步更新peer依赖声明适配新版本RN和React,就会触发这个解析错误。
可行解决方法
- 临时加参数跳过peer依赖校验完成核心包升级
执行升级命令时追加--legacy-peer-deps参数,让npm使用旧版宽松解析逻辑,忽略peer依赖不匹配的问题,先把RN和React核心版本升级到位:
核心包升级完成后,再逐个把项目里的三方依赖升级到支持React 18、RN 0.69的版本,最后删除npx react-native upgrade --legacy-peer-depsnode_modules文件夹和package-lock.json文件,重新执行npm install --legacy-peer-deps安装全部依赖即可。 - 降低升级跨度,按梯度逐版本升级
跨6个以上RN次版本直接升级本身就容易触发大量兼容问题,不要直接跳转到最新版,按版本梯度逐次升级,每升级一个RN版本就同步处理对应版本的依赖兼容问题,能大幅降低冲突概率。 - 临时降级npm到6.x版本再执行升级
npm 6.x版本没有强制peer依赖校验逻辑,不会因为三方库的peer声明未更新就阻断安装流程:
降级完成后再执行npm install -g npm@6npx react-native upgrade命令,等全部升级流程跑完、依赖兼容问题处理完,再把npm切回高版本即可。
注意:升级完成后必须完整跑通项目全流程,部分长期未维护的三方库如果没有适配高版本RN,需要自行替换为维护状态正常的同功能库,或者打补丁做兼容处理。
内容的提问来源于stack exchange,提问作者Kaukau
相关产品推荐
相关产品推荐

