安装expo-notifications遇依赖冲突及Expo CLI不识别--force问题
解决Expo安装expo-notifications时的依赖冲突及--force参数无效问题
问题根源
- 全局Expo CLI不支持
--force参数,且Expo SDK 46及以上版本官方明确推荐使用本地CLI(npx expo install) - 依赖冲突核心是
@homee/react-native-mapbox-navigation@1.1.0的peer依赖要求react版本为^16.8.1,但项目使用的是react 18.1.0,npm虽提示可用--force或--legacy-peer-deps解决,但Expo CLI不兼容--force选项。
可行解决方案
1. 使用本地Expo CLI配合--legacy-peer-deps参数
这是最贴合Expo官方推荐的方式,通过--将npm参数传递给底层包管理器:
npx expo install expo-notifications -- --legacy-peer-deps
--legacy-peer-deps会让npm忽略peer依赖版本不匹配的问题,采用旧版npm的依赖解析逻辑,适合这种老依赖未适配高版本react的场景。
2. 直接用npm安装(绕过Expo CLI)
如果Expo CLI的方式仍有问题,可直接调用npm安装,同时添加--legacy-peer-deps:
npm install expo-notifications --legacy-peer-deps
⚠️ 注意:安装前要确认expo-notifications的版本与你的Expo SDK版本兼容,Expo官方包的版本通常和SDK版本一一对应,比如SDK 49对应expo-notifications@~0.20.1,避免版本不兼容导致其他问题。
3. 升级或替换冲突依赖(长期方案)
@homee/react-native-mapbox-navigation@1.1.0版本过旧,未适配react 18:
- 先查看该包是否有更新版本支持react 18,如果有,升级到最新版:
npm install @homee/react-native-mapbox-navigation@latest - 如果该包已停止维护无更新,建议寻找支持react 18和Expo的替代导航库,从根源解决依赖冲突问题。
内容的提问来源于stack exchange,提问作者chris aimsworth
相关产品推荐
相关产品推荐

