如何更新react-native-cool-speedometer的react-native-svg依赖解决冲突?
解决react-native-cool-speedometer与react-native-svg的依赖冲突问题
以下是几个可行的解决思路,帮你把react-native-cool-speedometer的react-native-svg依赖统一到13.8.0版本:
方案1:使用npm overrides强制统一依赖版本
这是最简便的方式,通过npm的overrides字段,强制指定react-native-cool-speedometer使用项目中的react-native-svg@13.8.0,不需要修改第三方包的源码。
- 打开项目根目录的
package.json,添加如下字段:
"overrides": { "react-native-cool-speedometer": { "react-native-svg": "^13.8.0" } }
- 删除项目根目录的
node_modules和package-lock.json(或yarn.lock) - 重新执行
npm install(或yarn install)
这样npm会自动让react-native-cool-speedometer使用你指定的react-native-svg版本,避免依赖冲突。
方案2:用patch-package生成持久化补丁
如果overrides不生效,或者你需要更灵活的修改,可以用patch-package给第三方包打补丁,持久化修改它的依赖版本:
- 先安装
patch-package作为开发依赖:
npm install patch-package --save-dev
- 打开
node_modules/react-native-cool-speedometer/package.json,找到dependencies里的react-native-svg,把版本改成^13.8.0 - 在项目根目录执行命令生成补丁:
npx patch-package react-native-cool-speedometer
- 之后每次执行
npm install,patch-package都会自动把这个补丁应用到react-native-cool-speedometer上
方案3:fork包并自行更新依赖
如果上面两种方法都不适用,可以考虑forkreact-native-cool-speedometer的仓库:
- 在GitHub上fork该项目
- 修改仓库中
package.json里的react-native-svg依赖为^13.8.0 - 提交修改并推送到你的fork仓库
- 在你的项目中安装fork后的包:
npm install git+https://github.com/你的用户名/react-native-cool-speedometer.git
为什么你之前的方法出问题?
- 降级
react-native-svg到12.1.0出现RNSVGSvgView重复注册,是因为项目中可能残留了旧版本的缓存或者其他依赖也引用了更高版本的react-native-svg,导致两个版本的原生模块冲突。 - 直接进入
react-native-cool-speedometer目录执行npm update会更新该包的所有依赖,破坏了它原本的依赖树,导致项目依赖混乱出现白屏。
内容的提问来源于stack exchange,提问作者Engr.Aftab Ufaq
相关产品推荐
相关产品推荐

