Expo独立构建应用运行失败且无法更新构建求助
Expo独立构建应用卡在闪屏的问题排查与解决
核心问题
应用在Expo Go环境运行正常,但打包为独立版本后启动卡在闪屏,删除旧构建重打、EAS Update均无法解决问题,伴随三类具体报错。
具体问题
- Async Storage依赖报错:未在代码中使用已废弃的Async Storage API,但Firebase Auth依赖包主动调用该API
- 代码修改无法同步到构建:本地修复了
fontesLoaded拼写错误,但构建仍报该错误 - 语法错误误报:系统提示某文件存在缺少逗号、未定义
undefined的语法错误,但实际文件无对应问题
依赖版本信息
{ "@babel/core": "^7.22.10", "@babel/traverse": "7.16.7", "react-native": "0.72.3", "firebase": "^10.2.0", "expo": "~49.0.7", "@react-native-async-storage/async-storage": "1.18.2" }
已尝试的解决方法
- 删除旧构建后重新构建
- 使用EAS Update推送更新
针对性解决方案
1. 解决Async Storage依赖问题
Firebase Auth在React Native环境下默认依赖Async Storage做身份持久化,需适配Expo环境:
- 确保
@react-native-async-storage/async-storage版本与Expo 49兼容(当前1.18.2符合要求) - 在
app.json/app.config.js中添加插件配置,确保Expo构建时正确打包该依赖:"plugins": ["@react-native-async-storage/async-storage"] - 升级Firebase到最新稳定版(如10.5.x+),修复旧版本的适配问题
2. 解决代码修改无法同步问题
问题源于构建缓存或Git同步异常:
- 清理EAS构建缓存后重新构建:运行
eas build --clear-cache - 确认本地所有代码修改已提交至Git仓库,EAS构建默认拉取仓库代码,未提交修改不会被打包
- 检查EAS构建的分支配置,确保使用的是包含修改代码的分支
3. 解决语法错误误报问题
因Babel版本不匹配或缓存导致转译异常:
- 统一Babel相关包版本:将
@babel/traverse升级至^7.22.10(与@babel/core版本一致) - 清理本地缓存:删除
node_modules/.cache文件夹,重新执行npm install/yarn install - 在
babel.config.js中添加Firebase依赖的转译配置,避免第三方代码转译错误:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], overrides: [ { test: /node_modules\/firebase\/.*/, presets: ['babel-preset-expo'] } ] }; };
内容的提问来源于stack exchange,提问作者Raghul Ragavan
相关产品推荐
相关产品推荐

