报错:
<--- JS stacktrace --->
<--- Last few GCs --->
说明内存不足了,有两个解决办法,一种是每次启动项目之前都需要设置一下,解决步骤如下:
1.打开你的终端(vsCode)或者 Terminal(WebStorm)
2.执行以下命令
set NODE_OPTIONS=--max_old_space_size=8192
3.然后重启VS Code 执行运行,完美解决问题 !
记得重启VS Code!!!!
第二种步骤稍微多一些 ,但是不需要每次都设置了,步骤如下:
1、安装依赖
npm install cross-env increase-memory-limit
2、 在package.json 里的 script 里进行配置
LIMIT是你想分配的内存大小,这里的8192单位是M也就是8G,大小可根据情况而定。
"scripts": {
"limit": "cross-env LIMIT=8192 increase-memory-limit"
},
3,执行一次 npm run limit ,然后重新启动项目即可。
但是这时候,重新启动会报错:
'"node --max-old-space-size=8192"' 不是内部或外部命令,也不是可运行的程序或批处理文件。
解决方法:
在项目的 node_modules/.bin 文件下找到所有的 *.cmd 文件,"%_prog%" 去掉 双引号 %_prog%
可在 node_modules 同级下,写一个fix-memory-limit.config.js文件进行批次处理。
// 运行项目前通过node执行此脚本 (此脚本与node_modules 目录同级)
const fs = require('fs')
const path = require('path')
const wfPath = path.resolve(__dirname,'./node_modules/.bin')
fs.readdir(wfPath,(err,files)=>{
if(err){
console.log(err)
}else{
if(files.length != 0){
files.forEach(item => {
if(item.split('.')[1] === 'cmd'){
replaceStr(`${wfPath}/${item}`,/"%_prog%"/,'%_prog%')
}
})
}
}
})
function replaceStr(filePath,sourceRegx,targetSrt){
fs.readFile(filePath,(err,data) =>{
if(err){
console.log(err)
}else{
let str = data.toString()
str = str.replace(sourceRegx,targetSrt)
fs.writeFile(filePath,str,err => {
console.log(err)
})
}
})
}
然后修改 package.json里的 script里的语句
先处理内存溢出问题,然后再执行js,进行替换
&& 运算符,(相继执行,只有前一个执行成功才会执行下一个)
"scripts": {
"limit": "cross-env LIMIT=8192 increase-memory-limit && node fix-memory-limit.config.js"
}
4,如上修改完之后,重启项目即可。
版权归原作者 砥砺前行 前程似锦 所有, 如有侵权,请联系我们删除。