Angular 11执行build构建报错Call retries were exceeded如何解决?
Angular 11 构建报错
Call retries were exceeded 解决方案 该错误通常由Node构建内存不足、Angular生态依赖版本不兼容、多进程编译worker调用超时三类原因导致,对应排查解决步骤如下:
- 第一步:对齐所有Angular生态依赖版本
当前package.json存在多处版本不匹配问题,是引发构建异常的核心诱因之一,需要统一版本:- dependencies中
@angular/cli版本为~11.2.14,但devDependencies中@angular/cli仅为~11.0.0,统一修改为~11.2.14 - devDependencies中
@angular-devkit/build-angular版本为~0.901.6,属于Angular 9对应的工具版本,和Angular 11完全不兼容,修改为~0.1102.14 @angular/cdk版本为^12.1.3,高于Angular核心的11版本,降级为~11.2.13和Angular Material版本对齐@angular/compiler-cli、@angular/language-service都统一修改为~11.2.14版本
- dependencies中
- 第二步:清理损坏的依赖缓存并重装依赖
依次执行以下命令:# 删除现有依赖和锁文件,Windows环境可手动删除node_modules文件夹和package-lock.json文件 rm -rf node_modules package-lock.json # 清理npm全局缓存 npm cache clean --force # 重新安装依赖 npm install - 第三步:扩容Node构建内存,避免内存溢出导致worker进程崩溃
修改package.json中的build脚本,增加Node内存上限:
8192代表分配8G运行内存,可根据自己设备配置调整为4096(4G)或16384(16G)。"build": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --extract-css" - 第四步:禁用多进程编译/调整编译配置,避免worker调用超时
如果调整后仍然报错,可以在构建命令后增加--max-workers=1参数强制单进程编译,规避多进程worker调度异常:
也可以修改angular.json中build节点的配置,关闭不稳定的inlineCritical样式优化:"build": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --extract-css --max-workers=1""optimization": { "scripts": true, "styles": { "minify": true, "inlineCritical": false }, "fonts": true }
内容的提问来源于stack exchange,提问作者Akash Gupta
相关产品推荐
相关产品推荐

