WebPark-javascript heap out of memory打包启动报错

1,844 阅读1分钟
  • 今天使用npm run dev 启动项目时报出了堆溢出的错误

bedc69da2001664c8a4150e9d93b92d.png

  • 报错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),所以当项目比较庞大的时候就会发生内存泄漏。

解决办法就是增大node的内存限制
  1. 在package.json文件的scripts中添加
{
    script:{
        "ionic:build": "node --max-old-space-size=8192 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
    }
}
  1. 如果方法一不起作用的话, 在项目的node_modules/.bin/webpack-dev-server.cmd文件中增加其中node节点的属性,node后加node --max-old-space-size=10240 单位是mb
@IF EXIST "%~dp0\node.exe" (
 "%~dp0\node.exe"  "%~dp0\..\webpack-dev-server\bin\webpack-dev-server.js" %*
) ELSE (
 @SETLOCAL
 @SET PATHEXT=%PATHEXT:;.JS;=;%
 node --max-old-space-size=10240  "%~dp0\..\webpack-dev-server\bin\webpack-dev-server.js" %*
) 
  1. vue-cli3解决办法
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    
    "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit",
  },

同时安装 2 个依赖包

"devDependencies": {
   "increase-memory-limit": "^1.0.3",
   "cross-env": "^5.0.5"
}

其原理是修改了node_modules中.bin(通常就是第一个文件夹)的文件夹内所有文件权限