Expo EAS构建后应用出现白屏问题求助
Expo EAS构建后应用出现白屏问题求助
兄弟我太懂这种开发环境跑起来顺得一批,一打包就白屏的崩溃感了!dev模式下hooks、组件都正常,EAS构建也没报错,结果安装后直接白屏,这种情况十有八九是生产环境下有静默的未捕获错误,或者是打包时的配置、依赖问题,给你几个实用的排查方向:
- 先抓生产环境的错误日志:这是最快定位问题的方法,安卓的话把设备连电脑,运行
adb logcat *:E命令,过滤出错误日志,里面大概率会显示白屏的具体原因——比如某个模块找不到、变量undefined、hook里的异步请求失败之类的,dev模式下有热重载和错误提示,生产环境这些都被关掉了,所以只能看系统日志。 - 本地模拟生产打包环境调试:不用每次都等EAS构建,直接跑
expo start --no-dev --minify,这个命令会以生产模式(压缩代码、关闭dev工具)启动应用,能复现大部分打包后的问题,调试起来快很多。 - 检查你的_layout.tsx配置:看你贴的代码开头已经导入了
GestureHandlerRootView,一定要确认它完整包裹了整个应用的根组件,比如:
另外,你用的import 'react-native-gesture-handler'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import { fonts } from '@/constants/fonts'; import { useBingoBoards } from '@/hooks/useBingoBoards'; export default function RootLayout() { const boards = useBingoBoards(); // 必须给GestureHandlerRootView设置flex:1,不然可能导致内容不显示 return ( <GestureHandlerRootView style={{ flex: 1 }}> {/* 这里放你的路由出口或者其他子组件 */} </GestureHandlerRootView> ); }useBingoBoardshook也要检查下,有没有在生产环境下不可用的逻辑——比如是不是用了__DEV__条件下的变量,或者调用了dev环境才有的API,生产环境下这些会变成undefined,触发错误。 - 检查环境变量和依赖:如果你的代码里用了环境变量,要确认EAS构建时这些变量已经正确注入(可以在eas.json里配置);另外检查依赖版本,比如
react-native-gesture-handler和你当前的Expo SDK版本是不是兼容,版本不匹配很容易导致生产打包后出问题。 - 排查静态资源和路径问题:比如你导入的
@/constants/fonts,要确认字体文件在生产打包时被正确包含进去了,路径有没有写错,静态资源加载失败也可能导致白屏。
先从抓日志开始,基本能快速定位到问题,祝你早日解决!
内容来源于stack exchange
相关产品推荐
相关产品推荐

