NodeJS Nrwl NX JavaScript堆在lint上内存不足

ibps3vxo  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(200)

我在一个Nx monorepo中工作,有许多Angular 15应用程序和一些共享库。我使用nx cli生成了一个新的Angular应用程序,它工作得很好。我可以提供和构建应用程序没有问题。
当我将新应用程序的tsconfig文件添加到eslintrc.json文件时,出现了问题

"overrides": [
  "parserOptions": {
    "project": [
      "apps/new-app/tsconfig.*?.json"
      "libs/shared/tsconfig.*?.json"
      */ -----
        15 others
      -----/*
    ]
  }
]

如果我将新应用程序添加到parserOptions中,则运行
nx affected --target=lint
我得到这个错误的共享库没有被触及

<--- Last few GCs --->

[18664:0000015D230EE780]    71334 ms: Scavenge 4044.3 (4127.2) -> 4039.4 (4128.5) MB, 12.6 / 0.0 ms  (average mu = 0.835, current mu = 0.632) allocation failure 
[18664:0000015D230EE780]    71386 ms: Scavenge 4047.0 (4130.1) -> 4043.9 (4131.8) MB, 14.5 / 0.1 ms  (average mu = 0.835, current mu = 0.632) allocation failure 
[18664:0000015D230EE780]    72392 ms: Scavenge 4048.8 (4131.8) -> 4045.8 (4150.1) MB, 989.7 / 0.0 ms  (average mu = 0.835, current mu = 0.632) allocation failure 

<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF7DB8A0B5F v8::internal::CodeObjectRegistry::~CodeObjectRegistry+124015
 2: 00007FF7DB82C916 v8::internal::wasm::WasmCode::safepoint_table_offset+64182
 3: 00007FF7DB82D992 v8::internal::wasm::WasmCode::safepoint_table_offset+68402
 4: 00007FF7DC161D94 v8::Isolate::ReportExternalAllocationLimitReached+116
 5: 00007FF7DC14C35D v8::SharedArrayBuffer::Externalize+781
 6: 00007FF7DBFEF93C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1468
 7: 00007FF7DBFECA54 v8::internal::Heap::CollectGarbage+4244
 8: 00007FF7DBFEA3D0 v8::internal::Heap::AllocateExternalBackingStore+2000
 9: 00007FF7DC00EF56 v8::internal::Factory::NewFillerObject+214
10: 00007FF7DBD416F5 v8::internal::DateCache::Weekday+1797
11: 00007FF7DC1EFA71 v8::internal::SetupIsolateDelegate::SetupHeap+494417
12: 0000015D254F5AEA

如果我从parserOptions中删除新的应用程序并运行lint,那么除了新的应用程序之外,linter的所有操作都会成功,错误告诉我将tsconfig添加到parserOptions中
我在windows上运行,使用的是node版本v16.18.1,我已经尝试通过几种方式使用--max-old-space-size=6144/--max_old_space_size=6144来增加可用内存。
有谁知道是什么导致了这个问题,或者如何解决它?虽然除了nxlint之外,其他都可以正常工作,但我的公司使用nx内置的lint命令来验证代码,然后才能推送或合并代码

siv3szwd

siv3szwd1#

对我来说,修复方法是改变我在每个应用程序中指定tsconfig.json的方式。本来我有

"project": ["tsconfig.base.json"]

将此更改为

"project": ["apps/{{app-name}}/tsconfig.*?.json"]

似乎修复了这个问题,所有正确的文件包括在内,没有内存问题。
很奇怪的问题,我很想听听解释。对我来说,当我迁移到Nx 16和Angular 16时,它会随机弹出-即使在运行迁移之后。我不确定你的情况是否不同。有趣的是,在CI机器(Ubuntu 22.04.2,x64)上没有任何问题,但我的开发机器和另一台机器(macOS 13.4,arm 64)都有问题。

相关问题