Expo构建Android失败:':app:bundleReleaseJsAndAssets'任务执行出错
解决EAS Build构建Android生产版时nativewind相关的打包错误
问题原因
该错误源于nativewind依赖的PostCSS插件使用了异步API,但Metro打包器在处理CSS时不支持异步流程,导致bundleReleaseJsAndAssets任务执行阻塞失败。
排查修复步骤
1. 对齐依赖版本兼容性
- 升级nativewind至最新稳定版,确保和你的React Native版本匹配:
npm install nativewind@latest - 同步PostCSS及配套插件(如tailwindcss)的版本,避免版本冲突,参考适配版本示例:
// package.json中建议的依赖版本 "nativewind": "^2.0.11", "tailwindcss": "^3.3.2", "postcss": "^8.4.24"
2. 修正PostCSS配置
在项目根目录的postcss.config.js中,确保配置为同步模式,移除或替换异步插件:
module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, // 删除任何依赖异步回调的自定义PostCSS插件 }, };
注意:若使用了第三方PostCSS插件,需确认其支持同步处理逻辑,否则直接移除。
3. 调整Metro配置适配CSS解析
在metro.config.js中添加CSS文件的解析支持:
const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.sourceExts.push('css'); module.exports = config;
4. 清理缓存后重新构建
- 清理EAS Build远程缓存:
eas build --clear-cache - 本地清理缓存后测试:
npx expo start --clear
5. 检查eas.json构建配置
确保Android生产构建配置无冲突项,比如自定义Gradle命令不要干扰打包流程:
{ "build": { "production": { "android": { "buildType": "app-bundle", "gradleCommand": ":app:bundleRelease" } } } }
验证修复效果
先执行本地生产打包测试,确认错误已解决:
npx expo run:android --variant release
本地打包成功后,再提交EAS Build远程构建。
内容的提问来源于stack exchange,提问作者snowingfox
相关产品推荐
相关产品推荐

