问题描述及错误原因
项目在引入了很大的JS/JSON等文件后,打包出来却只有xxxB大小,打包会失败。查看了日志有句关键的话 “CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory” ,JavaScript堆内存不足,这里的JavaScript指的就是Node,也就是说打包过程中因为项目过大Node能够使用的内存大小被限制了,默认大小为64位系统下约为1.4 GB,32位系统下约为0.7 GB。
解决方案
方案一、扩展项目对于node运行的内存限制(需要安装新的npm包)
① 打开window运行窗口运行命令 (win + R)
npm install -g increase-memory-limit
② 在项目目录下运行命令
increase-memory-limit
方案二、全局放宽node内存限制 (全局扩展)
打开window运行窗口运行命令 (win + R)
setx NODE_OPTIONS --max_old_space_size=4096
方案三、根据项目大小扩展对于node的限制 (最为常用)
在package.json中script字段中node 后面加上 --max_old_space_size=4096,内存大小可变
如build
"build": "node --max_old_space_size=4096 build/build.js test"
方案四、删除npmrc文件, C:\Users\下的.npmrc文件