使用react-native-datepicker报AccessibilityInfo缺失错误,求无需降级RN的解决方法
react-native-datepicker无法解析AccessibilityInfo模块的非降级解决方案
问题根因
你本地通过file路径引入的react-native-datepicker包自身的node_modules目录下嵌套安装了旧版本react-native,旧版本的核心模块导入规则和你项目使用的RN 0.61.5版本不匹配,才会触发模块找不到的报错,无需降级RN版本,可按以下方案解决:
可选解决方案
方案1:调整本地datepicker包的依赖声明
- 进入项目目录下的
packages/react-native-datepicker文件夹,打开该目录下的package.json - 将
dependencies字段中的react-native依赖项移动到peerDependencies字段下,若不存在peerDependencies可自行新增,配置参考:"peerDependencies": { "react": "*", "react-native": ">=0.60.0" } - 删除
packages/react-native-datepicker目录下的node_modules文件夹 - 回到项目根目录,删除根目录的
node_modules、package-lock.json(或yarn.lock)后重新执行依赖安装 - 执行
npx react-native start --reset-cache清空缓存重启打包服务即可
方案2:配置metro强制统一RN解析路径
如果不想修改第三方包的配置,可直接在项目根目录新增/修改metro.config.js,强制所有react-native导入都指向项目根目录的RN版本,配置参考:
const path = require('path'); module.exports = { resolver: { extraNodeModules: { 'react-native': path.resolve(__dirname, 'node_modules/react-native'), }, }, };
修改完成后清空缓存重启打包服务即可生效。
方案3:替换为官方维护的日期选择库
可直接弃用已停止维护的react-native-datepicker,改用官方社区维护的@react-native-community/datetimepicker,该库适配所有RN 0.60+版本,功能更完善,无需兼容旧包逻辑。
内容的提问来源于stack exchange,提问作者Alok Singh
相关产品推荐
相关产品推荐

