如何使用 NODE_OPTIONS 环境变量在 Windows 中全局设置 max_old_space_size?

Posted

技术标签:

【中文标题】如何使用 NODE_OPTIONS 环境变量在 Windows 中全局设置 max_old_space_size?【英文标题】:How to use the NODE_OPTIONS environment variable to set the max_old_space_size globally in Windows? 【发布时间】:2019-11-06 14:25:11 【问题描述】:

在运行节点二进制文件时修复堆内存不足的解决方法(这是使用 TypeScript 2.1+ 和 webpack 时的常见问题)正在增加节点的最大内存。

increase-memory-limit 是一个包来做到这一点。在链接中,它说

从 2017 年 8 月发布的 Node.js v8.0 开始,您现在可以使用 NODE_OPTIONS 环境变量设置 max_old_space_size 全球范围内。导出 NODE_OPTIONS=--max_old_space_size=4096

但是如何在 Windows 中设置该环境变量?在 powershell 中,它给了我错误“导出:“导出”一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。 检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。"。

【问题讨论】:

【参考方案1】:

export 是一个 Linux 命令。对于 Windows,您可以使用 set

set NODE_OPTIONS=--max_old_space_size=4096

【讨论】:

如何检查是否已应用? 这将帮助您 v8.getHeapStatistics().total_available_size / 1024 / 1024 从版本 10.14.1 开始,命令行 arg 和环境变量 NODE_OPTIONS 都可以工作 set 不应该在部分之间持续存在吗?我的意思是,我关闭了我的终端,问题已经存在......如果没有,有没有办法让它持续存在? 我认为您可以使用setx 在 Windows Server 上持久化环境变量。它varies on other versions. 使用 set NODE_OPTIONS=--max_old_space_size=4096 设置后当我检查它时: node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'它没有增加.....【参考方案2】:

根据 nodeJs 文档,属性应该是(带连字符)

--max-old-space-size=SIZE(以兆字节为单位)

并且可以像其他人所说的那样用于启动脚本或使用 NODE_OPTIONS 设置/导出。无需为此导入新库。

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

参考:https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes

【讨论】:

【参考方案3】:

要在 AWS Instance 上解决此问题,

登录 AWS 控制台并从“实例状态”点击关闭实例

然后在操作点按下

选择更改实例类型

然后选择t2.medium,保存退出

返回并开始实例

然后再次运行您的应用

这在 t2.micro 实例上很常见,因为它是 1 gig Ram

谢谢

【讨论】:

以上是关于如何使用 NODE_OPTIONS 环境变量在 Windows 中全局设置 max_old_space_size?的主要内容,如果未能解决你的问题,请参考以下文章

opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ], library:

如何重置所有环境变量?

node/小程序过大导致内存溢出(已解决)

opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ], library:

如何在win7中安装ipython,并且设置环境变量

win10怎么把环境变量恢复