我在哪里设置“ NODE_OPTIONS =“ – max-old-space-size = 2048””

时间:2019-07-11 05:12:54

标签: node.js memory

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

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

5 个答案:

答案 0 :(得分:4)

可以使用多种方式使用此标志。

第一个选项

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

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

提到的.bashrc文件OP在Linux环境中存在,大多数注释都引用重新加载bash 作为一种快速方法,例如source ~/.bashrc,它可以在当前会话中加载env var。总是可以重新启动终端以重新加载,但是前者是首选!同样,如果使用Windows,则忽略此操作。

第二个选项

现在,如果设置环境变量不是首选选项,则在运行node命令时始终可以使用--max-old-space-sizeExample from Nodejs.org documentation

$ node --max-old-space-size=1536 index.js

第三种选择

或者,正如OP已经回答的那样,我们可以根据每个项目设置此值,但是实现可能会因项目而异。

对于npm个脚本,此Git注释会对其进行回答Best way to set --max-old-space-size when running npm I reckon it's hyphens not underscore ):

"scripts": 
{
    "start": "cross-env NODE_OPTIONS=--max-old-space-size=4096 webpack"
}

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

"scripts":
{
    "build-prod": "node --max-old-space-size=4096 ./node_modules/@angular/cli/bin/ng build --configuration=production"
}

答案 1 :(得分:4)

在您的终端中输入以下内容:

export NODE_OPTIONS="--max-old-space-size=8192"

答案 2 :(得分:3)

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

export NODE_OPTIONS=--max-old-space-size=<size in bits>

在终端中。

如果你在windows上运行

set NODE_OPTIONS=--max-old-space-size=<size in bits>

答案 3 :(得分:0)

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

scripts": {
"start": "node  --max-old-space-size=1024 ./bin/www"
}

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

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

希望它会有所帮助:)

答案 4 :(得分:0)

这对我有用

我原来的package.json

"scripts": {
"start": "npm run build-semantic && react-scripts start"
}

更新为

"scripts": {
"start": "npm run build-semantic && react-scripts start --max-old-space-size=1024"
}

感谢@Gurpinder输入