Expo Go启动应用时卡在加载界面(ActivityIndicator持续转圈)求助
兄弟,我之前也碰到过一模一样的糟心事!Expo Go更新后把之前好好的项目搞卡加载页,结合你提到用到了@react-native-async-storage/async-storage,给你几个亲测有效的排查和解决方向:
先核对Expo SDK与Expo Go版本匹配度:这是最常见的坑!Expo Go的版本必须和你项目里的Expo SDK版本严格对应。比如你项目还在用SDK 48,但Expo Go更到了SDK 49,启动时就会因为环境不兼容卡住。你可以打开项目根目录的
package.json,找到"expo"字段看版本号,然后要么把项目的Expo SDK升级到和Expo Go一致的版本,要么把Expo Go降级到和项目SDK匹配的旧版(iOS可以通过TestFlight安装历史版本,安卓能找对应版本的APK包)。清理应用缓存与Async Storage数据:既然用到了Async Storage,很可能是更新后旧缓存的数据格式不兼容,导致启动时读取卡住。你可以在Expo Go里找到你的应用,长按选择「Clear Cache」,重启项目试试;也可以在代码里给Async Storage的读取逻辑加个容错,避免旧数据搞崩启动流程:
try { const storedData = await AsyncStorage.getItem('your-storage-key'); // 正常处理数据逻辑 } catch (error) { console.error('读取缓存出错:', error); // 出错时直接清空缓存,用默认值启动 await AsyncStorage.clear(); }
检查依赖版本兼容性:除了Expo SDK,
@react-native-async-storage/async-storage的版本也要和你的Expo SDK匹配。比如SDK 49对应的该包版本大概是^1.19.0,你可以对照项目package.json里的版本,不匹配的话就调整版本号,然后运行npx expo install --fix让Expo自动修复依赖冲突。重置项目本地缓存:有时候项目的metro缓存也会搞鬼,你可以在终端运行
npx expo start -c清除所有本地缓存,再重新启动metro服务器,用Expo Go扫码试试。排查启动逻辑的阻塞点:看看你的App入口文件(比如
App.js)里,在显示ActivityIndicator之前有没有做耗时的异步操作(比如批量读取缓存、初始化第三方SDK),这些操作在Expo Go更新后可能因为环境变化卡住。可以暂时注释掉这些异步代码,看看能不能正常启动,逐步定位是哪一步出了问题。
按这些步骤试下来,应该能解决大部分这类卡加载的问题,我之前就是靠降级Expo Go加清缓存搞定的!
内容来源于stack exchange

