编译环境时出现内存不足(JavaScript heap out of memory )

18,214 阅读1分钟

1、问题描述

react项目开发过程中使用webstrome或vscode编辑器执行 yarn start 或 yarn build命令时报错。

CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 

2、分析

JavaScript 内存不足,指的就是Node,Node 基于V8引擎, Node 中通过script使用的内存只是很小的一部分(64位系统下约为1.4 GB,32位系统下约为0.7 GB),当我们的开发中包比较大时,就容易形成内存不足。

3、解决方案

  1. 直接修改系统中Node 使用的内存大小,新开一个命令窗口;等号后面是我们新设置的内存大小 以MB为单位,设置合理的大小即可
 setx NODE_OPTIONS --max_old_space_size=4096
 
  1. 在项目package.json的 scripts 中增加 node --max_old_space_size=4096
"scripts": {
    "build": "react-app-rewired build && node --max_old_space_size=4096 generateZipFile.js ",
  
  },
  1. 依赖increase-memory-limit插件,增加node服务器内存限制 下载increase-memory-limit 插件之后 在scripts中增加一句设置内存的代码
 
/* package.json 文件 */
"devDependencies": {
    "increase-memory-limit": "^1.0.6",
},
  /* 添加 fix-memory-limit */
"scripts": {
    "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"
}

执行

 npm run fix-memory-limit

4、总结:无论上面的那一种方法执行完成都需要关闭所有打开的命令框和代码编辑器,不然可能会设置失败。

参考资料 详解基于node的前端项目编译时内存溢出问题