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、解决方案
- 直接修改系统中Node 使用的内存大小,新开一个命令窗口;等号后面是我们新设置的内存大小 以MB为单位,设置合理的大小即可
setx NODE_OPTIONS --max_old_space_size=4096
- 在项目package.json的 scripts 中增加 node --max_old_space_size=4096
"scripts": {
"build": "react-app-rewired build && node --max_old_space_size=4096 generateZipFile.js ",
},
- 依赖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