当我在应用程序中运行“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,因此您可能需要改用此命令。
@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)
希望能帮助到你 :)
在您的终端中输入:
export NODE_OPTIONS="--max-old-space-size=8192"
Run Code Online (Sandbox Code Playgroud)
小智 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)
这里有一些很好的答案,但我只想指出,如果您使用 Docker,在您的 中Dockerfile,您可以通过包含来设置环境变量
ENV NODE_OPTIONS="--max-old-space-size=8192"
Run Code Online (Sandbox Code Playgroud)
只是取决于你的设置是什么。