近日遇到一个老项目,通过webpack自己搭建的脚手架,只要npm run dev开始运行内存就持续增长,一直到百分之九十多,电脑卡死。为了找到原因,尝试了很多办法,包括
- 更换编译器运行(检查是否是编译器消耗内存)
- 运行其他项目(检查是否是当前项目的问题)
- 回滚代码(检查是否是代码造成内存泄露)
- 更换nodejs老版本(检查是否是nodejs版本过高)
等等,折腾了一天还是没有找到原因
打开任务管理器发现node.js serve-side javascript一直居高不下
最后,大致确定是webpack调用 fsevents 出错,然后频繁查找modules目录导致,,在webpack的配置文件中添加,情况得以缓解
watchOptions: {
ignored: /node_modules/
}
参考:https://webpack.docschina.org/configuration/watch/#watchoptions-ignored
然而,同样的代码我之前运行就没有这个问题,在同事电脑上运行也不会造成内存持续增加,所以也不晓得为什么,如果有同行遇到过这个问题或者知道什么原因,请评论或私信告知,万分感谢。