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

升级Ionic/Angular后VSCode中ESLint报JavaScript堆内存不足错误

问题描述

近期将Ionic/Angular应用升级至最新版本,相关依赖版本如下:

"@angular/*": "^16.1.1",
"@angular-eslint/builder": "16.0.3",
"@angular-eslint/eslint-plugin": "16.0.3",
"@angular-eslint/eslint-plugin-template": "16.0.3",
"@angular-eslint/schematics": "16.0.3",
"@angular-eslint/template-parser": "16.0.3",

"eslint": "^8.44.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-jsdoc": "46.2.6",
"eslint-plugin-prefer-arrow": "1.2.3",
"@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.59.7",
"eslint-config-prettier": "^8.8.0", 

"ts-node": "~10.9.1",
"typescript": "^5.1.3",

在安装了dbaeumer.vscode-eslint扩展的VSCode中运行应用时,ESLint输出JavaScript堆内存不足的致命错误,无法进行代码检查,错误日志如下:

[Info  - 6:07:32 AM] ESLint server is starting.
[Info  - 6:07:33 AM] ESLint server running in node v16.17.1
[Info  - 6:07:33 AM] ESLint server is running.
[Info  - 6:07:34 AM] ESLint library loaded from: C:\dev\myapp\node_modules\eslint\lib\api.js

<--- Last few GCs --->

[37792:00000138004CC000]    31705 ms: Scavenge 3937.6 (4076.3) -> 3936.2 (4077.1) MB, 4.3 / 0.0 ms  (average mu = 0.850, current mu = 0.817) allocation failure; 
[37792:00000138004CC000]    31717 ms: Scavenge 3938.3 (4077.1) -> 3937.1 (4078.6) MB, 4.1 / 0.0 ms  (average mu = 0.850, current mu = 0.817) allocation failure; 
[37792:00000138004CC000]    31732 ms: Scavenge 3939.9 (4078.6) -> 3938.5 (4088.1) MB, 4.5 / 0.0 ms  (average mu = 0.850, current mu = 0.817) allocation failure; 


<--- JS stacktrace --->

FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
 1: 00007FF6237416D6 node::Buffer::New+47862
 2: 00007FF62374184D node::OnFatalError+317
 3: 00007FF626146E13 v8::internal::WebSnapshotDeserializer::UpdatePointersCallback+787
 4: 00007FF626146DA7 v8::internal::WebSnapshotDeserializer::UpdatePointersCallback+679
 5: 00007FF6261BF067 v8::CppHeap::CollectGarbageInYoungGenerationForTesting+65495
 6: 00007FF624F477B3 v8::CppHeap::GetHeapHandle+201107
 7: 00007FF622518ACE v8::CppHeap::CollectStatistics+232910
 8: 00007FF622518592 v8::CppHeap::CollectStatistics+231570
 9: 00007FF622523232 v8::CppHeap::CollectStatistics+275762
10: 00007FF624822873 Cr_z_uncompress+2817971
11: 00007FF624822B82 Cr_z_uncompress+2818754
12: 00007FF622519583 v8::CppHeap::CollectStatistics+235651
13: 00007FF62250E63B v8::CppHeap::CollectStatistics+190779
14: 00007FF62250A194 v8::CppHeap::CollectStatistics+173204
15: 00007FF6224F945D v8::CppHeap::CollectStatistics+104285
16: 00007FF6224F6C87 v8::CppHeap::CollectStatistics+94087
17: 00007FF6224F4093 v8::CppHeap::CollectStatistics+82835
18: 00007FF624F27151 v8::CppHeap::GetHeapHandle+68401
19: 00007FF624F19090 v8::CppHeap::GetHeapHandle+10864
20: 00007FF62262308A v8::internal::TickSample::GetStackSample+114602
21: 00007FF5BFED7DBC 
[Info  - 6:08:07 AM] Connection to server got closed. Server will restart.
true

已知可通过--max-old-space-size参数增加Node.js堆内存,但不清楚如何应用到ESLint中。相同配置在其他小型项目中运行正常,当前项目仅规模稍大,求可行解决方法。

解决方法

1. 配置VSCode ESLint扩展的Node.js参数

打开VSCode设置(快捷键Ctrl+,),搜索ESLint: Node Options,在输入框中填入--max-old-space-size=8192(数值可根据项目大小调整,比如4096、8192,单位为MB)。保存后重启VSCode,让ESLint服务重新加载即可生效。

2. 在package.json中配置ESLint启动脚本

如果需要通过命令行运行ESLint,可在package.json的scripts字段中添加:

"lint": "node --max-old-space-size=8192 node_modules/eslint/bin/eslint.js ."

执行npm run lint时,ESLint会使用指定的堆内存运行。

3. 优化ESLint配置减少内存占用

  • 忽略不必要文件:在.eslintignore中添加node_modules/、dist/、build/等已编译或第三方文件,避免ESLint扫描这些无意义的文件。
  • 禁用高内存消耗规则:比如@typescript-eslint/no-unused-vars的复杂配置、eslint-plugin-jsdoc的部分严格规则,可暂时禁用或调整为更宽松的设置,观察内存占用变化。
  • 拆分配置范围:如果项目模块较多,可针对不同目录单独设置ESLint配置文件,缩小单次扫描的文件范围。

4. 升级Node.js版本

当前使用的Node.js版本为16.17.1,升级到较新的LTS版本(如18.x或20.x),新版本V8引擎在内存管理上有优化,可能缓解堆内存不足的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:17:58