当项目体积变大,逻辑及文件多的时候,我们普通的yarn serve/build可能就会报错
Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
大概原因是node编译的时候内存超出限制了,所以停止报错 百度解决方案大概以下几点
手动添加设置内存限制的指令
"scripts": {
"serve": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng serve"
}
使用这个插件 帮助咱们设置内存限制
yarn add increase-memory-limit
increase-memory-limit
百度到的普遍方法就是以上两点,但是我都使用了,最后还是无果,一样报错。 甚至使用了网上说的这个方法
cross-env LIMIT=4096000 increase-memory-limit
这样报错更加离谱了
最后在对比前后代码的更改查出了我的项目报错的原因
解决方法
vue.config.js
module.exports = {
lintOnSave: false
}
看似没有关系,但是其实因为我的项目近期增加了很多ESlint的校验规则(规则比较多) 导致打包、编译的时候node就报错了。
lintOnSave
设置是否在开发环境下每次保存代码时都启用 eslint验证。 默认:true
false:关闭每次保存都进行检测
true:开启每次保存都进行检测,效果与warning一样
warning:开启每次保存都进行检测,lint 错误将显示到控制台命令行,而且编译并不会失败。
error:开启每次保存都进行检测,lint 错误将显示到浏览器页面上,且编译失败。
default:同error
结语
所以我这边出现内存溢出的原因是:因为大量的eslint规则校验导致内存溢出。因为项目设置了提交代码前的lint-staged,而且配合vscode的eslint插件,已经满足需求了,这个配置我就设置关闭掉了。也算是解决了这个问题,有类似问题的童鞋可以参考一下。
上面说的不是很细致,作为踩坑的记录贴。