Expo项目安装react-navigation/native报ERESOLVE依赖冲突如何解决
这个报错是npm 7及以上版本默认开启严格peer依赖校验导致的:你项目中已安装的react-native-safe-area-context@4.2.5,和react-native-elements@3.4.2要求的peer依赖版本不匹配——3.4.2版本的react-native-elements仅兼容3.x系列的react-native-safe-area-context,无法识别4.x版本,因此安装新依赖时会直接阻断流程。
按优先级从高到低选择即可:
方案1:对齐兼容版本(最稳定,优先选择,适合跟着教程做项目的场景)
直接把冲突的依赖调整为互相兼容、且适配你当前Expo SDK 45的版本,不会出现运行时异常,操作步骤:
- 先卸载现有高版本的不兼容依赖:
npm uninstall react-native-safe-area-context
- 安装react-native-elements兼容的3.x正式版本,该版本和Expo SDK45完全适配:
npm install react-native-safe-area-context@3.4.1
- 后续安装react-navigation相关依赖时,优先用Expo自带的安装命令,它会自动匹配和你当前SDK版本适配的依赖包,避免额外的版本冲突:
npx expo install @react-navigation/native react-native-screens react-native-gesture-handler
方案2:临时跳过依赖校验(快速验证用,不推荐长期使用)
如果暂时不想调整现有依赖版本,可以在安装命令后追加--legacy-peer-deps参数,让npm沿用旧版本的宽松校验逻辑,不阻断存在peer冲突的安装流程:
npm install @react-navigation/native --legacy-peer-deps
注意:该方案存在运行时兼容风险,由于react-native-elements@3.4.2没有对4.x版本的react-native-safe-area-context做适配,后续如果出现组件布局错乱、上下文找不到的报错,仍需要切回方案1调整依赖版本。
方案3:升级UI组件库(适合愿意调整现有业务代码的场景)
react-native-elements的后续迭代版本(已更名为RNE,包名为@rneui/themed/@rneui/base)已经适配了4.x版本的react-native-safe-area-context,如果愿意修改项目中现有引入react-native-elements的代码,可以先卸载旧版UI库,安装新版后再装导航依赖:
npm uninstall react-native-elements react-native-vector-icons npm install @rneui/themed @rneui/base
替换完成后正常安装react-navigation依赖即可,不会再触发该版本冲突。
内容的提问来源于stack exchange,提问作者ZamZam

