求助:Expo应用部署后启动崩溃,开发环境运行正常
兄弟,我之前折腾Expo的时候也碰到过完全一样的问题——本地用react-native-script和exp start跑起来顺得不行,一用exp publish部署,不管是iPhone模拟器、真机还是Snack,都是启动页刚出来就闪退,头都大了!结合我踩过的坑,给你梳理几个最可能的排查方向,按优先级来:
排查Expo发布后启动页闪退的核心步骤
1. 先盯紧SDK版本和依赖兼容性
本地开发和发布环境的SDK版本不匹配,或者依赖包冲突是最常见的元凶:
- 先跑
expo diagnostics查看本地的SDK版本,必须和app.json里的sdkVersion完全一致,差个小版本都可能出问题! - 执行
npm list expo react-native检查依赖树,看看有没有版本冲突的包。要是有,直接删了node_modules和package-lock.json,重新npm install,别心疼这点时间。
2. 清缓存!清缓存!清缓存!重要的事说三遍
Expo发布时容易复用旧缓存,导致新代码没被正确打包:
- 发布前先清本地开发缓存:
expo r -c(重启开发服务器并清缓存)。 - 用
expo publish --clear强制清除发布端的缓存,重新发布——这个命令会让Expo彻底重新构建所有资源,很多时候闪退问题就这么解决了。
3. 检查启动页资源路径配置
启动页的图片路径在本地和发布环境的解析逻辑可能不一样:
- 打开
app.json看splash配置里的图片路径,必须是相对于项目根目录的正确路径,比如"./assets/splash.png",别用绝对路径。 - 跑
expo assets:list看看所有静态资源有没有被Expo正确识别,要是有资源没列出来,得手动加到app.json的assetBundlePatterns里,比如["assets/*"]。
4. 排查生产环境专属的代码bug
有些代码在本地开发(__DEV__为true)下正常,但生产环境(发布后__DEV__为false)就报错:
- 打开远程调试!在Expo客户端里打开已发布的应用,iOS摇一摇、Android按菜单键调出开发者菜单,开启"Remote JS Debugging",然后看Chrome控制台的报错信息——这是定位生产环境bug最有效的方法,没有之一。
- 检查代码里有没有依赖
__DEV__的逻辑,比如本地用的mock数据、没换成生产环境的API地址,这些在发布后都会导致崩溃。
5. 确认Snack的SDK版本匹配
Snack的默认SDK版本可能和你发布的项目版本不兼容:
- 在Snack里手动选择和你项目
sdkVersion完全一致的版本,再重新导入已发布的项目链接试试。
如果以上步骤都没解决,你可以搞个最小化测试项目——只保留基础启动页和核心代码,发布后看能不能正常运行,然后逐步添加原有项目的代码和依赖,这样就能精准定位是哪个部分搞的鬼了。
内容的提问来源于stack exchange,提问作者robertovg
相关产品推荐
相关产品推荐

