解决 Expo 卡在欢迎界面问题
当升级至 Expo SDK 51+ 时,部分开发者会遇到应用启动后始终停留在 "Welcome to Expo" 界面的问题。该问题通常与自定义配置冲突有关,以下是已验证的解决方案:
核心原因
第三方 Babel 插件(如 react-native-dotenv
)或自定义 babel.config.js
会破坏 Expo SDK 51+ 的默认行为,导致应用无法加载实际内容。
✅ 推荐解决方案
1. 清除冲突的 Babel 配置
完全移除或简化 babel.config.js
文件,仅保留基础预设:
javascript
module.exports = function (api) {
api.cache(true);
return {
presets: ['babel-preset-expo'] // 仅保留官方预设
};
};
2. 卸载冲突插件
bash
# 卸载第三方环境变量库
npm uninstall react-native-dotenv babel-plugin-transform-inline-environment-variables
# 清除缓存并重启
npx expo start --clear
🔧 备选修复方案
若问题仍存在,尝试:
bash
# 强制清理缓存(所有平台通用)
npx expo start -c
# Android 设备重新构建
npx expo run:android
环境变量新规范
从 Expo SDK 51 开始,直接使用原生环境变量支持:
- 所有环境变量需添加
EXPO_PUBLIC_
前缀.env
示例:EXPO_PUBLIC_API_KEY=your_key_here
- 代码中直接调用:
process.env.EXPO_PUBLIC_API_KEY
🧠 技术原理
Expo SDK 51+ 内置了 Babel 配置和环境变量处理机制:
- 自定义
babel.config.js
会覆盖默认设置 react-native-dotenv
等插件与expo-router
存在冲突- 旧版环境变量加载方式已被弃用
⚠️ 注意事项
- 不要降级 SDK
多个案例证实降级(如退回 SDK 50)只是临时规避,非根本解决 - 彻底清理缓存
每次配置变更后需执行expo start -c
- 检查所有插件
除dotenv
外,类似transform-inline-environment-variables
也需移除
官方说明参阅:Expo 环境变量文档,SDK 51 变更详见更新日志。
通过上述步骤,应用将正确加载您的启动组件而非默认欢迎界面。此方案已在实际项目中验证,适用于 SDK 51-52 版本。