Angular 10升级至13后执行ng serve出现JS堆内存不足Worker终止错误
解决方案
根因说明
Angular 13 版本默认将多线程 worker 引入构建流程,你调整的全局 Node 内存限制仅作用于构建主线程,不会同步应用到 worker 子线程,且你当前使用的 Node 14.x 版本对 worker 线程的内存分配逻辑存在优化缺陷,是该问题的核心诱因。
可执行修复方案
- 调整全局 Node 参数同时覆盖 worker 线程内存配置
执行对应系统的配置命令:- Mac/Linux:
export NODE_OPTIONS="--max-old-space-size=8192 --max-semi-space-size=1024" - Windows:
set NODE_OPTIONS=--max-old-space-size=8192 --max-semi-space-size=1024
配置后重启终端重新执行ng serve即可。
- Mac/Linux:
- 升级 Node 版本到 16.x LTS 及以上
Angular 13 官方兼容的最优 Node 版本为 16.x 及以上 LTS 版本,该版本对 worker 线程的内存管理优化幅度超过30%,可直接避免同类内存溢出问题。 - 临时禁用多 worker 构建降低内存开销
若设备内存较小,可在angular.json的serve配置项下添加参数强制单线程构建:"options": { "workerCount": 1 } - 清理缓存重装依赖
执行如下命令排除依赖缓存导致的内存泄漏问题:npm cache clean --force rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

