EAS Expo开发构建成功但iOS生产构建失败
补全eas.json的production配置
你的production配置是空对象,Expo生产构建默认需要生成bundle,空配置可能导致打包流程异常。试试补充必要配置:"production": { "distribution": "store", "ios": { "bundleIdentifier": "你的项目包名" } }注意:managed workflow下生产构建默认会生成main.jsbundle,但配置缺失容易触发异常。
手动预生成bundle验证
先本地执行expo export -p ios,生成dist目录下的bundle文件,确认是否能正常生成。如果这一步失败,说明是JS代码打包环节出了问题——比如依赖报错、语法错误,先解决这部分问题再继续构建。
若bundle生成成功,再尝试本地构建:eas build --profile production --platform ios --local,观察是否还会出现bundle缺失的问题。清理缓存
- 删除Xcode派生数据:直接删除
/Users/michael/Library/Developer/Xcode/DerivedData/下对应项目的文件夹 - 清理EAS本地缓存:执行
eas build:clear-cache,之后重新发起构建
- 删除Xcode派生数据:直接删除
检查版本兼容性
Expo 46对应的eas-cli建议使用适配版本,你当前使用的2.8.0版本号达标,但不妨试试更新到最新兼容版:npm install -g eas-cli
另外,排查项目依赖是否存在冲突,比如部分第三方库在生产构建时无法正常打包。可以删除node_modules和package-lock.json,重新执行npm install重装依赖。查看完整构建日志
构建时添加--verbose参数获取详细日志:eas build --profile production --platform ios --local --verbose,重点查看bundle生成阶段的具体错误,比如是否存在打包超时、资源加载失败等情况。排查自定义metro配置
如果项目中有自定义的metro.config.js,可能会干扰生产打包流程(比如误禁用了bundle生成)。暂时注释掉自定义配置,使用默认配置测试构建。
内容的提问来源于stack exchange,提问作者Michael Brenndoerfer

