ng build 时超出调用重试次数异常
Posted
技术标签:
【中文标题】ng build 时超出调用重试次数异常【英文标题】:Call retries were exceeded exception while ng build 【发布时间】:2020-04-19 05:27:43 【问题描述】:ng build
(为差异加载生成 ES5 包...)时遇到异常
An unhandled exception occured: Call retires were exceeded
使用过的版本:
Angular-CLI:8.3.20
角:8.2.7
节点:12.12.1
在日志中也提到了
[error] Error: Call retries were exceeded at ChildProcessWorker.initialize
【问题讨论】:
在 tsconfig.app.json 如果你有target: es2015
用 target: es5
改变它
@MsuArven 是的!从 es2015 更改为 es5 对我有用。
@Angular 你能告诉我,为什么 es2015 会导致这个异常吗?
这对我有用。我刚刚删除了node_modules/
并重新安装了。
@TintinSansYeux 如果我们想使用差异加载,我们必须将目标设置为 es2015
【参考方案1】:
10.02.2019 更新
这是@angular/cli
的问题。将版本更新到 >= 8.3.22
应该可以解决问题:see this comment in #16515
原创
基本上构建过程内存不足:请参阅相关的 angular-cli 问题#15493、#16515
建议的补救措施是:
将节点更新到最新版本,例如12.14.0
增加构建过程的内存:
在您的package.json
中将"build"
脚本更改为:node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build
在这种情况下,内存增加到4GB
根据您的项目规模,您可能需要更多
作为一种快速的解决方法,它也可以使用旧版本的angular/cli
和build-angular
:
"devDependencies":
"@angular-devkit/build-angular": "0.803.20",
"@angular/cli": "8.3.20",
如果需要,另一种解决方法是禁用 differential-loading(即跳过 ES5 捆绑包的生成)。然后构建过程将需要更少的内存并且可以工作。
【讨论】:
node --max_old_space_size=4096
对我不起作用。使用 8GB 时,它可以工作。
我遇到了同样的问题,上面的命令已经解决了 - node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build
我有 Angular CLI: 9.1.12,这也发生在我身上。我正在构建一个离子应用程序。 @TmTron,在这种情况下你有什么建议?
@D.Hodges 我建议你发布一个新问题并添加 ionic 标签。
这与使用“es2015”构建应用程序有关。使用旧目标“es5”对我有用【参考方案2】:
对我来说,编辑 tsconfig.json 解决了我的问题。
@angular-devkit/build-angular 发生了变化,更新了差分加载。要在您的 Ionic 项目中解决此问题,请将 tsconfig.json 中的 target 值从 “es2015” 更改为 “es5”
更多详情:- https://forum.ionicframework.com/t/ionic-cordova-build-get-stuck-at-generating-es5-bundles-for-differential-loading/180202/4
【讨论】:
谢谢 Aravindh,这也解决了我的问题。 但我需要 es2015,因为 @angular/fire 6.0.3 和其他版本的 es5 失败。 github.com/angular/angularfire/issues/2521 这不是一个“解决方案”,只是一个会产生其他负面影响的破解/补丁【参考方案3】:使用
node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build
【讨论】:
这就像我的魅力。对于像我这样的其他初学者,您可以将 package.json 中的构建命令替换为 this。【参考方案4】:几天前我遇到了类似的问题。
我使用的是 Node v10,只能通过在 tsconfig.json 中更改为“target”:“es5”来避免生产构建期间的异常。这消除了不受欢迎的差异负载。
但是,在更新到 Node v14 后,我不再遇到异常,并且能够再次使用 "target": "es2015"。
【讨论】:
【参考方案5】:上面建议的解决方法确实对我有用,但现在有一个更优雅的解决方案,已针对 Angular9 及更高版本进行了测试。
不再需要手动处理 JS 堆分配 (node --max_old_space_size=4096
...),这是我们大多数人都不习惯的。
解决方案就是将"sideEffects": false
添加到您的package.json 文件中。
我在官方 Angular GitHub 问题页面 here 上找到了这个很棒的解决方案,它对我来说很顺利。
【讨论】:
【参考方案6】:我也遇到了同样的问题,把angular/cli版本改成8.3.19,问题已经解决了。
【讨论】:
【参考方案7】:这仅适用于已将应用迁移到 Angular 10 的用户 并且增加内存也无济于事
检查 package.json 中的“typescript”和“@types/node”检查它们在https://www.npmjs.com/package/@types/node 中是否兼容
尝试将@angular-devkit/build-angular 降级到 0.8XX.X 以下
【讨论】:
【参考方案8】:就我而言,我升级了节点的版本。
我运行的是 v10.*,我升级到 v12.20.1 并完成了构建。
我使用节点版本管理器:nvm 来切换节点版本。
【讨论】:
【参考方案9】:对于 react-natives,您会发现这很有帮助。
稍后谢谢我
npm install --save-dev escape-string-regexp
【讨论】:
以上是关于ng build 时超出调用重试次数异常的主要内容,如果未能解决你的问题,请参考以下文章