You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 13升级后执行ng lint报JavaScript heap out of memory错误如何解决?

问题原因

该错误是执行ng lint命令时,Node.js进程默认分配的堆内存不足以支撑ESLint处理全量项目文件,导致内存溢出进程崩溃。

解决方案

  • 调整lint脚本增加Node堆内存上限
    你当前test、start-dev等脚本已经配置了大内存参数,直接把lint脚本也做相同修改即可,将package.json中的lint配置替换为:
"lint": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng lint"

直接给lint对应的Node进程分配8G堆内存,可解决绝大多数中大型项目的lint内存溢出问题。

  • 优化ESLint配置降低内存消耗
    你当前配置中的createDefaultProgram: true是高内存占用的核心诱因之一,该配置会为所有未匹配到tsconfig的文件额外创建编译程序,会大幅提升内存占用。如果你的所有待校验TS文件都已经包含在src/tsconfig.json和e2e/tsconfig.json的include范围内,直接删除该配置即可,修改后的parserOptions如下:
"parserOptions": {
  "project": [
    "src/tsconfig.json",
    "e2e/tsconfig.json"
  ]
},

同时可以在ignorePatterns中添加更多不需要校验的目录/文件,减少ESLint的处理量:

"ignorePatterns": [
  "projects/**/*",
  "node_modules/**/*",
  "dist/**/*",
  "*.js"
]

  • 校验依赖版本兼容性
    确保你安装的@angular-eslint相关依赖版本和Angular 13完全适配,版本不兼容会导致意外的内存泄漏问题,Angular 13对应的@angular-eslint大版本为v13,可执行如下命令统一升级到对应兼容版本:
npm install @angular-eslint/builder@13 @angular-eslint/eslint-plugin@13 @angular-eslint/eslint-plugin-template@13 @angular-eslint/schematics@13 @angular-eslint/template-parser@13 --save-dev

  • 拆分lint任务(可选)
    如果项目体量极大,以上方案仍无法解决,可以拆分lint任务,分批次校验不同目录降低单次任务的内存占用,在package.json中添加拆分后的脚本:
"lint:src": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng lint --files 'src/**/*.ts' --files 'src/**/*.html'",
"lint:e2e": "node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng lint --files 'e2e/**/*.ts'"

执行时分别运行npm run lint:src和npm run lint:e2e即可。

内容的提问来源于stack exchange,提问作者San Jaisy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:08