webpack:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

最近用webpack热加载项目时经常挂掉,并报
95% emittingFATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

此类错误,网上查了下,这是由于编译的时间内存泄漏,因为前端项目如果非常的庞大,webpack 编译时就会占用很多的系统资源,如果超出了V8对 Node 默认的内存限制大小就会出现这个错误了;解决办法是我们在Node 在启动时可以传递 --max-old-space-size 或 --max-new-space-size 来调整内存大小的使用限制;

node --max-old-space-size=2048
node --max-new-space-size=2048 来调整内存大小的使用限制
知道解决办法之后赶紧动手撸码,打开package.json 中加入;但是我一打开我的package.json傻眼了,因为是用vue-cli生成的项目,运行开发环境命令中没有node?
"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  },
因为webpack自己帮我们封装了 npm run dev的方法,网上大神解决了我的困惑;

1、打开node_modules文件夹,就是安装node依赖包的这个文件夹;

2、打开.bin文件夹

3.找到webpack-dev-server.cmd;这个文件并用编辑器打开;打开后我的如下:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\[email protected]@webpack-dev-server\bin\webpack-dev-server.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node "%~dp0\..\[email protected]@webpack-dev-server\bin\webpack-dev-server.js" %*
)

这里就有dev环境的node运行命令了,我们只要在倒数第二行node后面加上上文提到的代码就ok了;注意空格;

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\..\[email protected]@webpack-dev-server\bin\webpack-dev-server.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  --max-old-space-size=4096  "%~dp0\..\[email protected]@webpack-dev-server\bin\webpack-dev-server.js" %*
)
完事

你可能感兴趣的:(个人经验,webpack,webpack缓存溢出)