从Expo SDK 47升级到SDK 48时构建失败求助
Expo SDK 48升级后EAS Build安卓报错的解决方案
问题分析
从expo-doctor的检测结果来看,核心问题是项目中存在旧版本的@expo/config-plugins@4.1.5,而SDK 48要求的版本是^5.0.2。直接更新依赖后问题依旧,大概率是某个第三方依赖间接拉取了旧版本的@expo/config-plugins,导致无法自动升级到要求版本。
解决步骤
1. 定位依赖来源
运行命令查看哪个包在依赖旧版本的@expo/config-plugins:
# npm 用户 npm why @expo/config-plugins # yarn 用户 yarn why @expo/config-plugins
从输出的依赖树中找到具体的依赖包,比如某些未适配SDK 48的第三方插件。
2. 强制指定正确版本
通过锁定版本的方式,强制让所有依赖使用SDK 48要求的@expo/config-plugins版本:
- npm 用户:在
package.json中添加overrides字段:"overrides": { "@expo/config-plugins": "^5.0.2" } - yarn 用户:在
package.json中添加resolutions字段:"resolutions": { "@expo/config-plugins": "^5.0.2" }
3. 清理缓存并重装依赖
删除旧的依赖缓存和锁定文件,确保新配置生效:
# 删除 node_modules 和锁定文件 rm -rf node_modules package-lock.json # npm # 或 rm -rf node_modules yarn.lock # yarn # 清理包管理器缓存 npm cache clean --force # npm # 或 yarn cache clean # yarn # 重新安装依赖 npm install # npm # 或 yarn install # yarn
4. 验证修复并重新构建
运行expo-doctor确认问题解决:
npx expo-doctor
如果所有检测项通过,再尝试执行EAS Build:
eas build --platform android
额外提示:检查废弃依赖
expo-app-auth已被Expo官方标记为废弃,SDK 48推荐使用expo-auth-session替代。如果上述步骤仍未解决问题,可以考虑替换该依赖:
# 卸载旧依赖 npm uninstall expo-app-auth # 安装替代依赖 npx expo install expo-auth-session
然后根据官方文档调整代码逻辑。
内容的提问来源于stack exchange,提问作者Adii_Mathur
相关产品推荐
相关产品推荐

