Expo React Native启动卡在Splash Screen报错问题求助
核心报错定位
React Refresh runtime should not be included in the production bundle是第一触发点,属于JS引擎初始化阶段的致命错误,后续的AppRegistry未注册、App.tsx无执行、卡Splash Screen都是这个初始化崩溃的连锁反应——代码还没走到业务入口就已经挂了,和App.tsx业务逻辑、Splash Screen隐藏逻辑完全无关。
这个错误的本质是构建模式冲突:开发环境专属的React Refresh热更新运行时代码,被错误打包进了标记为生产模式的JS bundle里,触发了React Native内置的环境校验逻辑直接抛错。
可落地的修复步骤(按优先级排序,已跳过你验证过的无效操作)
- 第一步先排查终端环境变量:你当前执行
expo start的终端会话里,大概率残留了之前设置的全局NODE_ENV=production变量。隔几周重启项目很容易碰到这个问题——之前开别的项目设的生产环境变量没清,开Expo dev server的时候,Metro识别到NODE_ENV是production就按生产模式打包,但dev server默认又会注入开发用的React Refresh代码,直接触发冲突。先在当前终端执行unset NODE_ENV清掉变量,再执行npx expo start -c启动(-c参数强制全量清Metro缓存,比手动删.expo文件夹清理范围更全)。 - 第二步排查Expo版本匹配问题:间隔几周时间很可能全局升级过expo-cli,全局CLI版本和项目里锁定的Expo SDK版本不兼容也会触发构建标记混乱。在项目目录执行
npx expo doctor,按输出提示修复所有标记为不兼容的依赖版本,修复完成后不要用全局的expo命令启动,始终用npx expo start调用项目本地安装的Expo版本启动,避免版本差问题。 - 第三步排查自定义构建配置:检查项目根目录的
metro.config.js、babel.config.js,有没有手动添加过和React Refresh、代码转换、环境注入相关的自定义规则,如果有临时把相关配置注释掉,用Expo默认配置启动测试。 - 第四步排查环境变量文件:检查项目根目录下有没有
.env、.env.production类的环境配置文件,有没有配置强制切换到生产环境的参数,开发启动时要确保没有加载生产环境的env配置。 - 兜底修复:如果以上步骤都无效,执行
npx expo install react-refresh,把react-refresh的版本对齐到当前Expo SDK要求的匹配版本,再清缓存重启即可。
内容的提问来源于stack exchange,提问作者Pelayo Martinez
相关产品推荐
相关产品推荐

