Angular应用AWS Amplify构建超时 卡在ES5 bundle步骤失败
AWS Amplify Angular应用构建卡在ES5 bundle步骤超时解决方案
这个故障是Amplify托管Angular项目的高频共性问题,6月初集中爆发的核心原因是Amplify默认构建镜像更新了预装Node.js版本,和Angular生产构建的内存、版本适配要求冲突:ES5 bundle生成完成后会进入ES2015+ bundle压缩、差量资源计算环节,这是整个构建流程里内存占用最高的步骤,默认配置下Node.js可用内存仅1.5G,Angular 12+版本开启生产构建时极易在这步内存占满进入假死状态,最终触发构建超时。
按以下优先级排查修复即可:
- 调整构建配置的Node版本与内存上限
进入Amplify控制台对应应用的「构建设置」页,编辑amplify.yml构建配置,首先指定和本地开发环境一致的Node.js大版本(不要用默认的latest标签),同时在构建命令前加Node内存参数,把可用内存拉到和Amplify标准构建实例匹配的4G阈值,参考配置:version: 1 frontend: phases: preBuild: commands: - nvm use 16 # 替换为你本地正常构建用的Node大版本,比如18就改成18 - npm ci # 用ci代替install,严格按锁文件装依赖,避免版本漂移 build: commands: - NODE_OPTIONS=--max-old-space-size=4096 npm run build -- --configuration production artifacts: baseDirectory: dist/你的Angular项目输出目录名 files: - '**/*' cache: paths: - node_modules/**/* - 裁剪不必要的生产构建项
如果调整内存后还是卡,打开项目根目录的angular.json,找到生产构建配置段,关闭容易触发CI假死的高消耗配置:"production": { "optimization": { "scripts": true, "styles": { "minify": true, "inlineCritical": false // Angular13+新增的关键CSS内联逻辑,在CI环境经常出现死循环 }, "fonts": false }, "sourceMap": false, // 生产环境关闭sourcemap,可减少40%以上的构建内存消耗 "namedChunks": false, "vendorChunk": false } - 锁定依赖版本避免漂移
如果前两步都没解决,检查package.json里的Angular相关依赖是否用了^/~这类浮动版本标记——6月初正好是Angular生态包集中发版窗口,浮动版本会自动拉取未经过兼容测试的最新小版本,很容易导致构建流程卡死。本地删除node_modules和锁文件后重新安装依赖,本地跑通生产构建后,把新生成的锁文件提交到仓库触发构建即可。
无需额外升级Amplify构建实例规格,以上三步可以覆盖95%以上同类型故障,升级规格只会产生不必要的成本。
报错日志参考


内容的提问来源于stack exchange,提问作者Yogesh Rathod
相关产品推荐
相关产品推荐

