内存溢出,打包失败CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

17 篇文章 1 订阅

1、vue项目打包,内存溢出报错

报错描述
CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory(内存溢出)
在这里插入图片描述
原因分析
报错中有句关键的话,CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory JavaScript堆内存不足,这里说的 JavaScript 其实就是 Node,我们都知道 Node 是基于V8引擎,在一般的后端开发语言中,在基本的内存使用上没有什么限制,但是在 Node 中通过 JavaScript 使用内存时只能使用部分内存(64位系统下约为1.4 GB,32位系统下约为0.7 GB),这就是我们编译项目时为什么会出现内存泄露了,因为前端项目如果非常的庞大,webpack 编译时就会占用很多的系统资源如果超出了V8对 Node 默认的内存限制大小就会出现刚刚我截图的那个错误了

解决方法

传递 --max-old-space-size 来调整内存大小的使用限制

vue直接在package.json中的命令中的 node 后面写上 – --max_old_space_size=4096 就好了,我这里设置的内存大小是4G,这个具体的大小可以根据自己的项目情况来设置就好了。

"build": "node --max_old_space_size=4096 build/build.js"

至于说React和Angular如何添加,请参考
https://segmentfault.com/a/1190000010437948

2、vue运行项目(npm run dev),热更新时内存溢出导致项目运行失败

解决方法一 在node_modules中的webpack-dev-server.cmd中添加max-old-space-size
windows 下的 vue 项目可以找到以下路径

./node_modules/.bin/webpack-dev-server.cmd

添加 --max-old-space-size=4096

@SETLOCAL

@IF EXIST "%~dp0\node.exe" (
  @SET "_prog=%~dp0\node.exe"
) ELSE (
  @SET "_prog=node"
  @SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%" --max-old-space-size=4096  "%~dp0\..\_webpack-dev-server@2.11.5@webpack-dev-server\bin\webpack-dev-server.js" %*
@ENDLOCAL

解决方法二 修改package.json中的scripts中的dev命令(本质也是添加max-old-space-size)

"dev":"node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --progress --config build/webpack.dev.conf.js",

参考链接一
https://blog.csdn.net/liub37/article/details/82866763?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-17&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-17
参考链接二
https://segmentfault.com/a/1190000010437948

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值