Expo SDK升级后出现“main未在AppRegistry注册”错误求助
解决Expo SDK38升级后"main has not been registered AppRegistry"错误
我之前升级Expo SDK的时候也碰到过一模一样的问题,给你分享几个亲测有效的解决步骤:
检查入口文件的AppRegistry注册代码
确认你的项目入口文件(一般是App.js或index.js)里有正确的注册逻辑,SDK38对入口的规范性要求更高,别写错了:import { AppRegistry } from 'react-native'; import App from './App'; import { name as appName } from './app.json'; AppRegistry.registerComponent(appName, () => App);另外要注意
app.json里的name字段和注册时的appName是一致的,别出现拼写错误。彻底清理缓存(比
expo r -c更彻底)
有时候光用expo r -c清不干净,试试这套组合拳:- 删除项目根目录下的
.expo文件夹 - 运行
npm cache clean --force(用yarn的话就跑yarn cache clean) - 重新安装依赖:
npm install或yarn install - 最后再启动:
expo start -c
- 删除项目根目录下的
排查依赖版本冲突
SDK升级后很容易出现第三方依赖不兼容的情况:- 先对照Expo SDK38的要求,把
package.json里的react(16.11.0)和`react-native`(0.62.2)版本调整正确 - 暂时移除一些可能有兼容性问题的第三方库(比如旧版的导航组件、原生模块),逐个排查是哪个库导致的注册失败
- 先对照Expo SDK38的要求,把
升级Expo CLI到适配版本
运行expo --version看看你的CLI版本,要是版本太旧,直接全局升级:npm install -g expo-cli,旧CLI和新SDK搭配很容易出奇怪的问题。
内容的提问来源于stack exchange,提问作者vincent O
相关产品推荐
相关产品推荐

