记录解决老项目内存溢出处理方案

方案一

在环境变量中,新增NODE_OPTIONS,并设置如下值:

--max_old_space_size=4096

方案二

使用第三方插件帮我们设置:
npm install -g cross-env increase-memory-limit
从项目的根位置执行以下命令
increase-memory-limit
在package.json中添加:
  "scripts": {
    "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"
  },
  "devDependencies": {
    "increase-memory-limit": "^1.0.3",
    "cross-env": "^5.0.5"
  }
并运行:
npm run fix-memory-limit

操作完以上步骤之后,可能会报错 node –max-old-space-size=4096不是内部或外部命令

该问题的解决办法:

在项目的node_modules.bin目录下面找到所有的*.cmd文件,
在ENDLOCAL语句的上边一行,修改"%_prog%" 改为 %_prog%, 去掉双引号。这边的.cmd文件可能有200多个,一般项目是屏蔽搜索node_modules目录下的文件的,因此,我们需要全局搜索时,点击files to exclude右侧的齿轮暂时不屏蔽被忽略的内容

或者写一个脚本修改:

// 运行项目前通过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) })
     }
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值