当我在应用程序中运行“ npm start”时,出现以下错误- 严重错误:无效的标记压缩接近堆限制分配失败-JavaScript堆内存不足
大多数在线发布的解决方案都是通过NODE_OPTIONS =“ – max-old-space-size = 2048”来增加内存。但是我不知道在哪里设置。一些帖子谈到了我的项目没有的.bashrc文件。我也在Windows系统上。 “ npm start”命令运行在package.json中设置的“ npm run build-semantic && react-scripts start”。
答案 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-size
。 Example 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输入