解决 macOS (M1 Pro) 上使用 Vite 进行 Build 打包时 Node 进程内存溢出的问题
在搭载 M1 Pro 芯片的 macOS 系统上,使用 Vite 进行项目构建(build)时,您可能会遇到 Node 进程内存溢出的错误。特别是在使用较新版本的 Node.js(如 Node 20)时,这个问题更为常见。
错误信息:
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
该错误表明当前 Node.js 进程尝试分配的内存量超出了其默认限制,这通常发生在处理大型项目或执行需要大量内存的操作时。
解决方案:
为了临时增加 Node.js 进程的最大旧空间大小(max-old-space-size
),可以通过设置 NODE_OPTIONS
环境变量来实现。以下是如何操作的具体步骤:
-
临时解决方案
在开始构建之前,通过命令行设置环境变量:
shexport NODE_OPTIONS="--max-old-space-size=8192"
此命令将 Node.js 的最大旧空间大小增加到 8GB。完成上述设置后,运行您的构建命令:
shyarn build
使用这种方法,您可以临时增加 Node.js 进程可用的内存。请注意,当关闭当前终端会话时,此设置将自动失效。
-
永久解决方案
如果希望永久更改此设置,可以在您的 shell 配置文件中添加相应的环境变量。对于使用 Bash 的用户,请编辑
~/.bashrc
文件,并加入如下行:shexport NODE_OPTIONS="--max-old-space-size=8192"
对于使用 Zsh 的用户,则需要编辑
~/.zshrc
文件并添加相同的行。保存文件后,请记得重新加载配置文件或重启终端以使更改生效。
通过调整 Node.js 进程的内存限制,您可以有效解决由于内存不足导致的构建失败问题,确保项目的顺利构建和部署。