JavaScript heap out of memory 错误解决方案
官方给的解释如下:
What is the memory limit on a node process?
Currently, by default v8 has a memory limit of 512MB on 32-bit systems, and 1.4GB on 64-bit systems. The limit can be raised by setting --max_old_space_size to a maximum of ~1024 (~1 GB) (32-bit) and ~4096 (~4GB) (64-bit), but it is recommended that you split your single process into several workers if you are hitting memory limits.
默认nodejs 使用的V8引擎官方默认配置是在64位的系统重视1.4g的内存,也正好和上面的提示用量一样,并且内存大小最大为4g,官方还建议如果使用较大内存的话则需要分成多个子worker这样来规避大内存的使用。
所以解决方法有两个:
-
在执行node命令的时候使用
–max_old_space_size=4096这个参数,设置最大4gb的内存例如以前的
node index.js变成node --max_old_space_size=4096 index.js -
直接安装 一个npm包
increase-memory-limit包地址如下:https://www.npmjs.com/package/increase-memory-limit这个包会自动为命令增加
--max_old_space_size=4096参数。
@vue/cli3.x 版本 JavaScript heap out of memory的处理
1.项目中使用上述操作拓展内存配置
2.修改全局安装的vue启动脚本 添加-max_old_space_size=4096参数
此处针对yarn全局安装的vuecli处理,在cmd控制台 执行如下命令:
notepad %USERPROFILE%/AppData/Local/Yarn/Data/global/node_modules/.bin/vue.cmd
编辑打开文件内容如下:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe --max_old_space_size=4096" "%~dp0\..\@vue\cli\bin\vue.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=4096 "%~dp0\..\@vue\cli\bin\vue.js" %*
)
其次针对项目中vue-cli-server处理,在脚本项目目录打开cmd控制台 执行如下命令:
notepad ./node_modules/.bin/vue-cli-server.cmd
编辑打开文件内容如下:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" --max_old_space_size=4096 "%~dp0\..\@vue\cli-service\bin\vue-cli-service.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=4096 "%~dp0\..\@vue\cli-service\bin\vue-cli-service.js" %*
)