如何将React Native从0.68.0升级至0.69.1?升级遇报错求助
React Native 0.68.0 → 0.69.1 升级报错解决方案
问题背景
使用npx react-native upgrade升级React Native版本时触发报错,项目当前依赖如下:
"dependencies": { "@react-native-async-storage/async-storage": "^1.17.7", "@react-navigation/native": "^6.0.11", "@react-navigation/native-stack": "^6.7.0", "axios": "^0.27.2", "react": "17.0.2", "react-native": "0.68.0", "react-native-bootsplash": "^4.2.3", "react-native-camera": "^4.2.1", "react-native-responsive-screen": "^1.4.2", "react-native-safe-area-context": "^4.3.1", "react-native-screens": "^3.15.0", "react-native-svg": "^12.3.0", "react-native-svg-transformer": "^1.0.0", "react-native-toast-message": "^2.1.5", "react-native-vector-icons": "^9.2.0", "react-redux": "^8.0.2", "redux-thunk": "^2.4.1" }
关键问题点
npx react-native upgrade已被官方弃用,该命令无法妥善处理RN 0.68到0.69版本间的依赖兼容、原生配置变更,容易触发报错。官方推荐使用React Native Upgrade Helper完成版本升级。
分步解决方案
1. 备份项目
升级前完整备份项目文件(含Git仓库、node_modules、Android/iOS原生目录),防止数据丢失。
2. 用官方升级助手同步核心文件差异
使用官方升级助手(选择版本区间0.68.0 → 0.69.1),生成两个版本的核心文件差异,手动同步到你的项目中:
- 重点同步
package.json、android/build.gradle、android/app/build.gradle、ios/Podfile等配置文件 - 按照助手提示处理原生项目的配置变更
3. 修复依赖兼容性
(1)升级React核心版本
RN 0.69.1要求React版本为18.0.0,执行:
npm install react@18.0.0 react-dom@18.0.0 # 或yarn yarn add react@18.0.0 react-dom@18.0.0
(2)更新第三方依赖
升级以下依赖至适配RN 0.69.1的版本:
react-native-bootsplash:升级到^4.3.0及以上react-native-svg:升级到^13.0.0及以上react-native-camera:查看官方文档确认兼容RN 0.69的版本,建议升级到最新兼容版
执行更新命令:
npm install react-native-bootsplash@^4.3.0 react-native-svg@^13.0.0 # 或yarn yarn add react-native-bootsplash@^4.3.0 react-native-svg@^13.0.0
4. 清理缓存与重新安装
# 删除旧依赖和锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 或yarn install # 清除RN缓存 npx react-native start --reset-cache
5. 处理原生项目
Android:
- 进入
android目录,执行./gradlew clean - 检查
gradle-wrapper.properties中的gradle版本是否为7.3.3(RN 0.69默认版本) - 在Android Studio中同步项目,修复配置错误
iOS:
- 进入
ios目录,执行pod deintegrate - 执行
pod install重新安装Pod依赖 - 打开Xcode,清理构建缓存(
Command + Shift + K)后重新构建
6. 验证升级
启动项目确认无报错:
npx react-native run-android npx react-native run-ios
内容的提问来源于stack exchange,提问作者Muhammad Yasir
相关产品推荐
相关产品推荐

