Emm*_*N K 261

对于那些从谷歌登陆这个问题的人的非角度一般答案:

每次遇到此错误时,可能是因为内存泄漏或 Node <= 10 和 Node > 10 管理内存的方式不同。通常只是增加分配给 Node 的内存将允许您的程序运行,但实际上可能无法解决真正的问题,并且节点进程使用的内存仍然可能超过您分配的新内存。我建议在节点进程开始运行或更新到节点 > 10 时分析它的内存使用情况。

我有内存泄漏。这是一篇关于在 node.js 中调试内存泄漏的好文章

也就是说,要增加内存,请在运行 Node 进程的终端中:

export NODE_OPTIONS="--max-old-space-size=8192"
Run Code Online (Sandbox Code Playgroud)

其中的值max-old-space-size可以是:[2048, 4096, 8192, 16384]

[更新]更多示例以进一步清晰:

export NODE_OPTIONS="--max-old-space-size=8192"
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,默认值为 512 MB。您不需要直接跳到 10 倍的数量,您可以先尝试 512 到 5120 之间的值。 (23认同)
  • 只是想指出 - 这并不总是表明内存泄漏。也许您正在使用的库使用的内存比以前多了一些。对于我们来说,“next.js”开始通过快速刷新功能使我们的应用程序崩溃。 (12认同)
  • @MikhailVasin 请参阅我的答案中的最后评论。我知道事实并非如此。我只是把它放在那里,供那些想要通用内存增量(以 GB 为单位)的人使用。 (3认同)
  • 感谢这适用于所有类型的有内存问题的应用程序。 (2认同)
  • 以下是文档 https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes ,没有任何迹象表明应该有“integer * 1024”的步骤。 (2认同)

小智 82

在我的情况下,解决这个问题安装 NodeJs,版本 12.10.0

  • 对于上下文,Node 12 有不同的堆管理策略,该策略基于可用内存而不是使用默认值。更多详细信息请参见:https://foundation.nodejs.org/announcements/2019/04/24/node-js-foundation-and-js-foundation-merge-to-form-openjs-foundation-2 (14认同)
  • @DerekDowling Wayback 导致链接损坏:https://web.archive.org/web/20191103115941/https://foundation.nodejs.org/announcements/2019/04/24/node-js-foundation-and-js-foundation -合并到表单-openjs-foundation-2 (2认同)

小智 45

视窗

\n

从控制面板转到系统\xe2\x86\x92高级系统设置\xe2\x86\x92环境变量\xe2\x86\x92新建(用户或系统)

\n

mceclip0.png

\n

或者可以在 PowerShell 中使用以下命令完成此操作:

\n
$env:NODE_OPTIONS="--max-old-space-size=8192"\n
Run Code Online (Sandbox Code Playgroud)\n

如有必要,您还可以增加此数字。我们已经看到,对于一些较大的项目,人们需要将其增加到 14\xc2\xa0GB!

\n

Linux/macOS

\n
export NODE_OPTIONS=--max-old-space-size=8192\n
Run Code Online (Sandbox Code Playgroud)\n


小智 35

ng build在 Visual Studio 代码中执行命令时遇到了同样的错误。但是当我按以下顺序在 Windows 命令行中执行相同的操作时,我可以成功构建。

第1步。

set NODE_OPTIONS=--max_old_space_size=4096
Run Code Online (Sandbox Code Playgroud)

第2步。

ng build
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 35

只需在终端中输入:

export NODE_OPTIONS="--max-old-space-size=8192"
Run Code Online (Sandbox Code Playgroud)

编辑:

当您超出节点允许的默认最大内存时,会发生错误。所有这些都是增加允许的最大内存。

  • @SvetoslavStefanov 我们现在是朋友了 (4认同)
  • 如果您正在使用 shell,这就是解决方案 (3认同)

小智 27

在centos服务器7上出现相同的问题,但这解决了我的问题:

node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
Run Code Online (Sandbox Code Playgroud)

X = (2048 or 4096 or 8192 o..)记忆的价值在哪里

  • 更改 x 的值后..错误保持不变 (2认同)

run*_*aul 15

试试这个在论坛上的旧消息中指出的解决方案:https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-working/107061/24

打开 node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js

更改第一行:

#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

#!/usr/bin/env node --max-old-space-size=4096
Run Code Online (Sandbox Code Playgroud)

尝试值1024和2048,但对于相对较大的应用程序,您可能需要4096.


hei*_*els 13

我在 Visual Studio 代码中执行以下语句时收到相同的错误消息。但是当我在 Windows 命令行中执行相同的事情时,我可以成功构建。

npm install -g increase-memory-limit
increase-memory-limit
set NODE_OPTIONS=--max_old_space_size=4096
ng build -c deploy --build-optimizer --aot --prod --sourceMap
Run Code Online (Sandbox Code Playgroud)


Rus*_*ust 11

在我的情况下,这是导致反应耗尽所有内存的递归

这发生在我重构我的代码并且没有注意到这一点时。

const SumComponent = () => {
  return (
    <>
      <SumComponent />
    </>
  ) 
}
Run Code Online (Sandbox Code Playgroud)

在其他节点应用程序中,这可能如下所示:

const someFunction = () => {
  ...
  someFunction(); 
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 递归是“SumComponent”包含一个“SumComponent”(其中包含一个“SumComponent”,而“SumComponent”又包含一个“SumComponent”...) (4认同)
  • 为什么这是一个问题?&lt;&gt;&lt;/&gt; 应该在 React 中有效,而不是使用 &lt;React.Fragment&gt; 对吗? (2认同)

小智 11

  1. 导出NODE_OPTIONS =“--max-old-space-size = 6144”#它将增加到6GB。

--------如果未解决,请尝试第二步------------- 2) 只需将节点版本更新到最新版本即可解决此问题。

--------如果未解决,请尝试第三步------------- 3)只需在 Windows 终端中运行此命令。 set NODE_OPTIONS=--max_old_space_size=4096


Hak*_*tık 10

从 Node 12 更新到 Node 14 为我解决了这个问题。


立即更新Node 16 可用,虽然我在上面发布了对我有用的特定解决方案,但我建议更新到可用的最新版本 Node.js。


小智 9

由于某些原因,上面的所有答案对我都不起作用,我做了以下工作来解决我的问题:

  1. 我必须先删除node_modules文件夹
  2. 在我的 PC 上重新安装 node.js 和
  3. 然后 npm install


Jos*_*own 9

对我来说,我有一个语法错误(没有显示)并导致了这个错误。


Aks*_*aik 7

node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer

添加参数--build-optimizer 解决了我的问题。

更新:

我不确定为什么只添加 --build-optimizer 解决了这个问题,但根据角度文档,它应该在启用 aot 的情况下使用,所以更新的命令应该如下所示

--build-optimizer=true --aot=true
Run Code Online (Sandbox Code Playgroud)

角度构建文档


Sar*_*das 6

更换线路

"start": "ng serve -o --port 4300 --configuration=en"

"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"

笔记:

  1. 端口--4300 不是常数取决于您选择的端口。

  2. --max_old_space_size=5096 太不恒定;任何值 1024,2048,4096 等


小智 6

我在 Angular 上也遇到了同样的问题。然后我写了

"serve": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve"
Run Code Online (Sandbox Code Playgroud)

这个脚本到package.json脚本对我来说这个问题解决了。

并运行项目此命令:

npm run serve
Run Code Online (Sandbox Code Playgroud)


Ala*_*lan 6

运行这个命令:

export NODE_OPTIONS="--max-old-space-size=2048"
Run Code Online (Sandbox Code Playgroud)

要检查您已经有多少:

> node
> v8.getHeapStatistics()
{
  total_heap_size: 6049792,
  total_heap_size_executable: 524288,
  total_physical_size: 5477720,
  total_available_size: 1094444024,
  used_heap_size: 4141728,
  heap_size_limit: 1098907648,
  malloced_memory: 8192,
  peak_malloced_memory: 582752,
  does_zap_garbage: 0,
  number_of_native_contexts: 2,
  number_of_detached_contexts: 0
}
Run Code Online (Sandbox Code Playgroud)

进而heap_size_limit: 1098907648


小智 5

node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
Run Code Online (Sandbox Code Playgroud)

  • 尽管此代码可以回答问题,但提供有关此代码为何和/或如何回答问题的其他上下文,可以提高其长期价值。 (7认同)

Dee*_*ath 5

在您的项目文件夹中运行此命令。使用服务而不是构建

node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve  --prod --port=4202
Run Code Online (Sandbox Code Playgroud)


Arv*_*iya 5

ng build我没有使用,而是在终端中执行以下命令来解决此问题。

 node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
Run Code Online (Sandbox Code Playgroud)

然后做ng serve

这就是我的终端的样子

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS D:\ProjectPath\Project1> node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
Run Code Online (Sandbox Code Playgroud)