Node.js npm构建提供了;无效的标记压缩接近堆限制分配失败”;

Node.js npm构建提供了;无效的标记压缩接近堆限制分配失败”;,node.js,reactjs,typescript,npm,Node.js,Reactjs,Typescript,Npm,我有一个reactjs/typescript项目,运行在Windows10上。我试图通过ts脚本和 “rimraf../wwwroot/*&&react脚本生成和复制文件 ./build/***/../wwwroot/-u 1 这在以前工作正常,但是当我删除node_modules-folder时,重新运行npm install命令,然后上面的命令会显示错误消息 致命错误:无效的标记压缩接近堆限制分配 失败-JavaScript堆内存不足 我不知道为什么。谷歌搜索后我看到 NODE_OPTION

我有一个reactjs/typescript项目,运行在Windows10上。我试图通过ts脚本和

“rimraf../wwwroot/*&&react脚本生成和复制文件 ./build/***/../wwwroot/-u 1

这在以前工作正常,但是当我删除node_modules-folder时,重新运行npm install命令,然后上面的命令会显示错误消息

致命错误:无效的标记压缩接近堆限制分配 失败-JavaScript堆内存不足

我不知道为什么。谷歌搜索后我看到

NODE_OPTIONS=“–最大旧空间大小=2048” 但我不知道该把这个放在哪里

完整错误消息

最后几次地面军事演习

[11376:0000024682F49880]    60039 ms: Mark-sweep 2034.1 (2085.2) -> 2033.7 (2085.2) MB, 1029.4 / 0.0 ms  (average mu = 0.073, current mu = 0.006) allocation failure scavenge might not succeed
[11376:0000024682F49880]    61094 ms: Mark-sweep 2034.4 (2085.2) -> 2034.1 (2085.7) MB, 1047.7 / 0.0 ms  (average mu = 0.039, current mu = 0.007) allocation failure scavenge might not succeed


 JS stacktrace 
==== JS stack trace =========================================

    0: ExitFrame [pc: 000001CDF84DC5C1]
Security context: 0x007044b9e6e1 <JSObject>
    1: bindChildrenWorker(aka bindChildrenWorker) [000001AD1C0ACD59] [C:\Users\robcar\source\repos\Boost\Boost.Web\ClientApp\node_modules\typescript\lib\typescript.js:~27657] [pc=000001CDF8FA47CA](this=0x03da79d826f1 <undefined>,node=0x034b8724ab71 <NodeObject map = 000000660468F931>)
    2: bind(aka bind) [000001AD1C0AE2D9] [C:\Users\robcar\source\repos\B...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF6B5EA121A v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4810
 2: 00007FF6B5E7A5B6 node::MakeCallback+4518
 3: 00007FF6B5E7AFA0 node_module_register+2160
 4: 00007FF6B610B3EE v8::internal::FatalProcessOutOfMemory+846
 5: 00007FF6B610B31F v8::internal::FatalProcessOutOfMemory+639
 6: 00007FF6B6649304 v8::internal::Heap::MaxHeapGrowingFactor+11476
 7: 00007FF6B663FA67 v8::internal::ScavengeJob::operator=+25543
 8: 00007FF6B663DFDC v8::internal::ScavengeJob::operator=+18748
 9: 00007FF6B6646F57 v8::internal::Heap::MaxHeapGrowingFactor+2343
10: 00007FF6B6646FD6 v8::internal::Heap::MaxHeapGrowingFactor+2470
11: 00007FF6B61E9DD7 v8::internal::Factory::NewFillerObject+55
12: 00007FF6B6281ABA v8::internal::WasmJs::Install+29530
13: 000001CDF84DC5C1
[11376:0000024682F49880]60039毫秒:标记扫描2034.1(2085.2)->2033.7(2085.2)MB,1029.4/0.0毫秒(平均mu=0.073,当前mu=0.006)分配失败清除可能无法成功
[11376:0000024682F49880]61094毫秒:标记扫描2034.4(2085.2)->2034.1(2085.7)MB,1047.7/0.0毫秒(平均mu=0.039,当前mu=0.007)分配失败清除可能无法成功
JS stacktrace
==JS堆栈跟踪=========================================
0:ExitFrame[pc:000001CDF84DC5C1]
安全上下文:0x007044b9e6e1
1:bindChildrenWorker(又名bindChildrenWorker)[000001AD1C0ACD59][C:\Users\robcar\source\repos\Boost\Boost.Web\ClientApp\node\u modules\typescript\lib\typescript.js:~27657][pc=000001CDF8FA47CA](this=0x03da79d826f1,node=0x034b8724ab71)
2:bind(又名bind)[000001AD1C0AE2D9][C:\Users\robcar\source\repos\B。。。
致命错误:无效的标记压缩接近堆限制分配失败-JavaScript堆内存不足
1:00007FF6B5EA121A v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4810
2:00007FF6B5E7A5B6节点::MakeCallback+4518
3:00007FF6B5E7AFA0节点模块寄存器+2160
4:00007FF6B610B3EE v8::内部::FatalProcessOutOfMemory+846
5:00007FF6B610B31F v8::内部::FatalProcessOutOfMemory+639
6:00007FF6B6649304 v8::内部::堆::MaxHeapGrowingFactor+11476
7:00007FF6B663FA67 v8::内部::清除作业::运算符=+25543
8:00007FF6B663DFDC v8::内部::清除作业::运算符=+18748
9:00007FF6B6646F57 v8::内部::堆::MaxHeapGrowingFactor+2343
10:00007FF6B6646FD6 v8::内部::堆::MaxHeapGrowingFactor+2470
11:00007FF6B61E9DD7 v8::内部::工厂::新填充对象+55
12:00007FF6B6281ABA v8::内部::WasmJs::安装+29530
13:000001CDF84DC5C1

我也有类似的问题,尽管是在Mac电脑上。 设置一个环境变量对我来说很有用。这样,您的节点进程将获取该值并独立于您正在运行的脚本使用它

export NODE_OPTIONS=--max_old_space_size=4096

再次运行您的命令。祝您好运!

我在Windows上也遇到了同样的问题。解决方案是在运行npm run build之前设置NODE\u OPTIONS变量。要设置此变量,只需运行
set NODE\u OPTIONS=--max\u old\u space\u size=8192
我已经面临此问题有一段时间了。此问题很可能是由依赖项引起的是一个大的.js文件。我目前正在使用它成功地解决这个问题

基本上,您可以在全球范围内安装它:

npm install -g increase-memory-limit
然后从项目根目录中运行:

increase-memory-limit

它将在
node\u modules/.bin/*
文件中的所有节点调用中追加
--max old space size=4096

我使用的解决方案是将node js版本从v10升级到v12



export NODE\u OPTIONS=--max\u old\u space\u size=4096命令可以工作,但有一些限制,例如,您的计算机上应该有足够的内存来运行生产版本。

我认为解决方案不是增加内存限制。这样,问题总是被推迟

这个问题我已经遇到过两次。每次我都解决了:

  • 使用特定版本的
    节点
    v12.11.1
    react v16.13.1
    react scripts v3.2.0
  • npm
    切换到
    warn
    node v12.11.1
    react v16.13.1
    react scripts v3.4.1
  • 此外,请检查您的
    package.json
    ,删除
    package lock.json
    ,删除
    节点模块
    文件夹,然后再次尝试安装依赖项


    接下来尝试构建您的项目。

    在增加节点最大旧空间后,我得到了一个修复。下面是修复方法

    不要运行npm start或ng start。请运行以下命令

    node--max_old_space_size=8048./node_modules/@angular/cli/bin/ng serve
    

    您还可以在
    package.json
    文件中添加该命令

    “开始”:“节点--max_old_space_size=8048./node_modules/@angular/cli/bin/ng serve”
    
    问题的根本原因是源文件太大

    您可以通过两个步骤解决此问题

  • 首先尝试增加空间大小并检查应用程序。如果问题是由源代码引起的,则可以通过如下增加节点堆大小来解决
  • “开始”:“反应脚本--最大旧空间大小=4096开始”,
    “生成”:“反应脚本--最大旧空间大小=4096生成”
    
  • 第二步是设置环境变量。 如果问题存在于依赖项中,则可能需要全局增加节点堆分配以解决该问题。
    对于Windows:
    set NODE\u OPTIONS=--max\u old\u space\u size=4096

    对于Linux:
    export NODE\u OPTIONS=--max\u old\u space\u size=4096
  • 还要注意的是,如果您使用的内存非常低,比如512MB,那么您必须将其升级到至少2GB才能获得更好的结果


    在这里,我使用了4096MB=4GB大小,但您可以根据您的机器配置(特别是RAM)来更改它。您可以将其设置为2GB或1GB,然后检查应用程序。

    这是我在package.json run命令中编写的内容

    “脚本”: