我在哪里设置 'NODE_OPTIONS="–max-old-space-size=2048"'

Zep*_*hyr 20 memory node.js

当我在应用程序中运行“npm start”时,我收到以下错误 - 致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足

网上发布的大多数解决方案都是关于使用 NODE_OPTIONS="–max-old-space-size=2048" 增加内存。但我不知道在哪里设置它。一些帖子谈到了我的项目没有的 .bashrc 文件。我也是windows系统。“npm start”命令运行在 package.json 中设置的“npm run build-semantic && react-scripts start”。

Dav*_*edy 23

也可以在 .npmrc 中设置 NODE_OPTIONS:

node-options=--max-old-space-size=8192
Run Code Online (Sandbox Code Playgroud)


san*_*jat 19

可以有多种方式来使用这个标志。

第一个选项

OP 最初寻找的是一种设置环境变量的方法。该NODE_OPTIONS --max-old-space-size环境变量允许增加节点的最大堆大小。设置环境变量允许 Node 从你的环境中读取这个值,所以我们不需要每次运行 Node 命令时都将此值作为参数传递。这被设置为一个全局值,可以被每个 Node 进程使用。

设置环境变量的过程取决于操作系统。这是关于此的两个 SO 帖子:

提到的 .bashrc 文件 OP 存在于 Linux 环境中,大多数评论都将重新加载 bash作为一种快速方式,例如source ~/.bashrc在当前会话中加载环境变量。可以随时重新启动终端以重新加载,但前者是首选!同样,如果使用 Windows,请忽略这一点。

第二种选择

现在,如果设置环境变量不是首选选项,则可以--max-old-space-size在运行 node 命令时始终使用任一选项。Nodejs.org 文档中的示例

$ node --max-old-space-size=1536 index.js
Run Code Online (Sandbox Code Playgroud)

第三个选项

或者,正如 OP 已经回答的那样,我们可以根据项目进行设置,但实施可能因项目而异。

对于npm脚本,这个 Git 评论回答了它运行 npm 时设置 --max-old-space-size 的最佳方法我认为hyphens不是underscore):

"scripts": 
{
    "start": "cross-env NODE_OPTIONS=--max-old-space-size=4096 webpack"
}
Run Code Online (Sandbox Code Playgroud)

在 Angular 项目中,你可以像这样定义它:

"scripts":
{
    "build-prod": "node --max-old-space-size=4096 ./node_modules/@angular/cli/bin/ng build --configuration=production"
}
Run Code Online (Sandbox Code Playgroud)


Ima*_*mal 10

如果您不熟悉Windows操作系统的方式,

如果您是 Windows 用户并且使用 PowerShell 而不是命令提示符,则将 Set NODE_OPTIONS="--max-old-space-size=8192"不起作用。你需要使用

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

请注意,Windows 上 VSCode 中的终端也是 PowerShell,因此您可能需要改用此命令。


Gur*_*der 7

@Zephyr您可以在package.json中设置最大值

scripts": {
"start": "node  --max-old-space-size=1024 ./bin/www"
}
Run Code Online (Sandbox Code Playgroud)

此外,您甚至可以在通过命令行启动节点应用程序时设置最大大小

node --max-old-space-size=1024 <path of your main file(For example server.js)>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)


Mat*_*att 6

在您的终端中输入:

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

  • @d2207 - 如果您使用的是 Windows,请将“导出”一词更改为“设置”。 (3认同)

小智 5

如果您使用的是 Unix,请输入

export NODE_OPTIONS=--max-old-space-size=<size in bits>
Run Code Online (Sandbox Code Playgroud)

在终端。

如果您在 Windows 上,则运行

set NODE_OPTIONS=--max-old-space-size=<size in bits>
Run Code Online (Sandbox Code Playgroud)

  • `max-old-space-size` 以兆字节为单位指定,而不是位,仅供参考 (10认同)

Ala*_*anH 5

这里有一些很好的答案,但我只想指出,如果您使用 Docker,在您的 中Dockerfile,您可以通过包含来设置环境变量

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

只是取决于你的设置是什么。