报错:

<--- 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,如上修改完之后,重启项目即可。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐