删除@react-native-community/datetimepicker后RNCAndroidDialogPicker重复注册如何解决
问题根因
首个报错Tried to register two views with the same name RNCAndroidDialogPicker是核心故障源,后续的AppRegistry报错都是该错误引发的React Native初始化失败。
冲突产生的原因是项目依赖树中同时存在两套Picker原生组件实现:
- 你单独安装的
@react-native-picker/picker@2.1.0(官方维护的新版Picker包) native-base@2.15.2内置依赖的旧版@react-native-community/picker,你移除/重装@react-native-community/datetimepicker的操作触发了依赖树变动,导致两个版本的Picker包同时被安装,触发重复注册冲突。
解决步骤
按顺序执行以下操作:
- 第一步:清理所有缓存与旧构建产物,排除缓存干扰
先停掉正在运行的Metro服务,依次执行命令:# 删除依赖与锁定文件,使用yarn的用户保留yarn.lock、删除package-lock.json即可 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 安卓端清理构建缓存 cd android && ./gradlew clean && cd .. # 清空Metro缓存启动服务 npx react-native start --reset-cache # 新开终端重新运行安卓应用 npx react-native run-android - 第二步:如果清缓存后仍然报错,强制统一所有Picker依赖的版本
如果你使用yarn作为包管理器,在package.json根节点添加如下配置:
如果你使用npm 8.3及以上版本,在package.json根节点添加如下配置:"resolutions": { "@react-native-community/picker": "npm:@react-native-picker/picker@^2.1.0" }
添加配置后重新执行第一步的清理、重装依赖流程即可。"overrides": { "@react-native-community/picker": "npm:@react-native-picker/picker@^2.1.0" } - 第三步:如果仍有冲突,检查其他依赖Picker的包版本
你项目中安装的react-native-picker-select旧版本同样依赖@react-native-community/picker,可以将其升级到最新兼容@react-native-picker/picker的版本,或者通过上述resolutions/overrides配置强制统一版本。
内容的提问来源于stack exchange,提问作者Harsh Mishra
相关产品推荐
相关产品推荐

