vue2 vue-cli版本
打包报错:FATAL ERROR:Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
原因:
VUE项目开发时间长了,随着项目越来越大,打包的时间也相应的变长,打包时的内存也增多了。这时候产生了一个问题,在发布项目的时候,会出现类似如下错误的提示。
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
out of memory内存溢出,使用内存时只能使用部分内存(64位系统:1.4 GB,32位系统:0.7 GB),这个时候,如果前端项目非常的庞大,Webpack编译时就会占用很多的系统资源,如果超出了V8引擎对默认的内存限制大小时,就会产生内存溢出的错误。
方法:
1. node --max-old-space-size=4096 ./node_modules/@vue/cli-service/bin/vue-cli-service.js --mode development build --no-module
2. 在node_modules/.bin/vue-cli-server.cmd把下面代码复制上去
@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" --max_old_space_size=4096 "%~dp0\..\@vue\cli-service\bin\vue-cli-service.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node --max_old_space_size=4096 "%~dp0\..\@vue\cli-service\bin\vue-cli-service.js" %* )
4. 安装两个npm包 :cross-env increase-memory-limit
npm install cross-env increase-memory-limit
再package.json中添加fix-memory-limit命令
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit",
},
操作完以上步骤之后,可能会报错 “node –max-old-space-size=4096不是内部或外部命令``”该问题的解决办法:
在项目的node_modules.bin下面找到所有的*.cmd文件,
在ENDLOCAL语句的上边一行,修改"%_prog%" 改为 %_prog%, 去掉双引号。
LIMIT是你想分配的内存大小,然后执行npm run fix-memory-limit。
再执行npm run serve重新启动项目,就不会再内存溢出了。