错误: EMFILE,Gulp.watch中打开文件过多

5

我的gulpfile.js长这样:

gulp.task('default', ['build', 'browser-sync'], function () {
    gulp.watch("**/*.css", ['bs-reload']);
    gulp.watch(["**/*.js", "!**/*/node_modules/**/*.*"], ['bs-reload']);
    gulp.watch("**/*.html", ['bs-reload']);
});

尽管我已经排除了node_modules,但它仍然试图添加所有node_modules的观察。如何排除它?请注意,node_modules不存在于项目的根目录中,实际上它位于项目根目录之上,那么为什么它会在包括相同的东西呢?
Error: EMFILE, too many open files '/Users/**/Documents/gits/tm/node_modules/browser-sync/lib/public/socket.io.js'
    at Object.fs.openSync (fs.js:438:18)
    at Object.fs.readFileSync (fs.js:289:15)
    at Object.utils.getSocketScript (/Users/**/Documents/gits/tm/node_modules/browser-sync/lib/snippet.js:109:19)
1个回答

6
尝试使用更为弹性的替代 fs 的方法:

graceful-fs

像这样全局修补 fs
var realFs = require('fs')
var gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(realFs)

这个应该在哪里打补丁?我有很多模块依赖于 fs - Angelin Calu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接