Expo项目转为纯ReactNative项目后运行失败报错如何解决
问题根因
- 核心冲突为Expo环境依赖与原生React Native项目版本规则不兼容:你直接将Expo项目的package.json拷贝到新建的原生RN项目,二者适配的RN核心版本、原生依赖编译规则完全不一致,使用
npm install --force强制安装忽略了版本冲突,最终导致@react-native-community/datetimepicker依赖包与当前RN版本不匹配,编译时找不到RN核心的注解类、接口实现不兼容报错。 - 次要问题为部分旧版本依赖仍使用已废弃的jcenter仓库,可能存在依赖拉取失败的隐患。
解决方案
步骤1:清理现有无效缓存
- 删除项目根目录下的
node_modules文件夹、package-lock.json文件 - 进入安卓项目目录执行构建清理:
cd android ./gradlew clean cd ..
步骤2:对齐依赖版本
不要直接复用Expo项目的完整package.json,按以下规则调整:
- 原生RN项目初始生成的package.json中
react、react-native两个核心依赖的版本保持不变,不要用Expo项目的版本覆盖 - 手动将Expo项目中用到的第三方非Expo专属依赖,逐个添加到当前package.json中,优先选择适配你当前RN版本的包版本
- 所有
expo-开头的Expo专属依赖不要拷贝到原生项目,这类依赖仅能在Expo环境运行,原生RN项目需要替换为对应的非Expo版本原生依赖 - 重点适配
@react-native-community/datetimepicker:根据你当前RN的版本安装匹配的版本,例如RN 0.60+适配3.x及以上版本,RN 0.65+适配5.x及以上版本,直接执行对应版本的安装命令即可
步骤3:修复jcenter仓库废弃问题
打开安卓根目录的build.gradle文件,将所有配置中的jcenter()替换为mavenCentral(),如果存在必须从jcenter拉取的特殊依赖,可临时保留,但建议后续升级依赖逐步移除对jcenter的依赖
步骤4:重新安装依赖运行
- 执行
npm install安装依赖,不要添加--force参数,如果出现版本冲突提示,针对冲突包单独调整版本适配即可 - 执行
npx react-native run-android重新启动项目
内容的提问来源于stack exchange,提问作者Imdadul Haque
相关产品推荐
相关产品推荐

