方案一
在环境变量中,新增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) })
}
})
}