前端项目运行/编译提示“内存溢出”

4,494 阅读2分钟

当项目体积变大,逻辑及文件多的时候,我们普通的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插件,已经满足需求了,这个配置我就设置关闭掉了。也算是解决了这个问题,有类似问题的童鞋可以参考一下。

上面说的不是很细致,作为踩坑的记录贴。