- 今天使用npm run dev 启动项目时报出了堆溢出的错误
-
报错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的内存限制
- 在package.json文件的scripts中添加
{
script:{
"ionic:build": "node --max-old-space-size=8192 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
}
}
- 如果方法一不起作用的话, 在项目的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" %*
)
- 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(通常就是第一个文件夹)的文件夹内所有文件权限