报错信息

描述: 无效的标记压缩接近堆限制分配失败-JavaScript堆内存溢出!
这个错误的意思时内存溢出,为什么会内存溢出呢?
原来 nodejs 默认限制了最大可使用的内存大小。
nodejs V8 引擎在 64 位机器上默认限制使用内存最大不超过 1.7GB,超过这个限制官方建议尝试优化为多线程方式。
当前端项目非常庞大时,编译时会占用很多资源,所以就会出现内存溢出的问题。

处理方案

方案 1

"uat": "node --max_old_space_size=10240 node_modules/@vue/cli-service/bin/vue-cli-service.js build --mode uat"
设置 node 内存大小 --max_old_space_size=10240

1
2
3
4
5
6
7
8
9
10
11
12
"scripts": {
"dev": "vue-cli-service serve --mode dev",
"test": "vue-cli-service build --mode test",
"uat": "node --max_old_space_size=10240 node_modules/@vue/cli-service/bin/vue-cli-service.js build --mode uat",
"build": "vue-cli-service build",
"report": "vue-cli-service build --report",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src",
"test:unit": "jest --clearCache && vue-cli-service test:unit",
"test:ci": "npm run lint && npm run test:unit",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
}

方案 2

cd到我们的项目目录下执行
LIMIT是分配的内存大小,有3027、4096、8192、10240,

1
2
3
4
// windows
set NODE_OPTIONS=--max_old_space_size=4096
// mac/linux
export NODE_OPTIONS=--max_old_space_size=4096