如何强制npm安装已废弃的React Native依赖包
React Native项目强制安装废弃@react-native-community/picker包操作指南
@react-native-community/picker已被npm官方标记为废弃,包维护方已将包迁移至@react-native-picker/picker,如果项目存量代码暂不支持直接替换,可通过以下几种方式完成强制安装:
方案1:安装参数直接绕过校验(最快)
执行安装命令时追加--force参数,直接跳过npm对废弃包、peer依赖冲突的拦截:
# 单独安装该包 npm i @react-native-community/picker --force # 全量安装项目所有依赖时也可使用 npm install --force
注意:该参数会跳过所有依赖的版本校验,安装完成后建议先执行一次原生端编译,确认没有其他兼容问题再开发。
方案2:临时调整npm配置(不影响其他依赖校验规则)
如果不想全局跳过所有校验,可以临时调整npm配置,关闭废弃包阻断规则后再安装:
- 执行配置命令关闭拦截:
npm config set strict-peer-deps false npm config set audit false - 正常执行安装命令:
npm i @react-native-community/picker - 安装完成后可还原默认配置,避免后续安装其他包时漏过版本问题:
npm config set strict-peer-deps true npm config set audit true
方案3:切换低版本Node适配
本地已通过nvm安装多版本Node,高版本Node(16.x对应的npm v8+)默认对废弃包的拦截规则更严格,如果前两种方案执行失败,可直接切换到Node 12.9.1版本(对应npm v6,不会主动阻断废弃包安装):
nvm use 12.9.1
切换完成后先清理现有依赖缓存和锁文件:
rm -rf node_modules package-lock.json
再重新执行依赖安装即可。
兜底方案
如果以上方案都拉包失败,可以直接手动在项目package.json的dependencies字段中写入该包废弃前发布的最后一个稳定版本号:
"@react-native-community/picker": "1.8.1"
写入完成后执行带legacy参数的安装命令即可:
npm install --legacy-peer-deps
补充说明:1.8.1版本兼容React Native 0.60~0.66区间的绝大多数版本,安装后不需要额外改原生配置即可正常运行。
内容的提问来源于stack exchange,提问作者Hamed Ezati
相关产品推荐
相关产品推荐

