React Native执行npm install axios安装Axios失败报依赖冲突错误
问题根因
这个报错和Axios本身无关,是npm v7及以上版本默认开启严格的peer依赖校验导致的:你当前React Native项目中已安装的react-native-vector-icons@8.1.0版本,和react-native-location-view@0.3.0要求的^4.4.3版本范围不匹配,安装任意新包时触发全量依赖校验就会抛出该错误,React JS项目没有这类原生依赖冲突自然不会触发报错。
可行解决方案
按优先级从高到低排列:
临时快速绕过(推荐90%场景使用)
安装时添加忽略peer依赖校验的参数即可,实测大部分场景下高版本react-native-vector-icons兼容旧版本API,不会引发运行时问题:npm install axios --legacy-peer-deps不推荐优先使用
--force参数,该参数会强制覆盖依赖,更容易引发不可预知的运行时错误。永久解决依赖冲突
如果你不想每次安装包都加参数,可以通过npm的overrides配置(需要npm v8.3及以上版本)强制指定react-native-location-view使用项目当前已安装的react-native-vector-icons版本:- 在项目根目录的
package.json中新增如下配置:
{ "name": "你的项目名", "version": "x.x.x", // 新增以下内容 "overrides": { "react-native-location-view": { "react-native-vector-icons": "$react-native-vector-icons" } } }- 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 执行
npm install重新安装所有依赖 - 后续再执行
npm install axios就不会触发冲突报错了
- 在项目根目录的
备选方案:替换老旧依赖
react-native-location-view@0.3.0已经多年未更新,对新版本依赖兼容性差,你可以查找功能类似的、仍在维护的同类型定位组件替换它,从根源上消除依赖冲突。
内容的提问来源于stack exchange,提问作者Suyash Vashishtha
相关产品推荐
相关产品推荐

