Error: EMFILE, too many open files with Gulp.watch
Error: EMFILE, too many open files with Gulp.watch
我的 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)
试试这个作为 fs
:
的更有弹性的替代品
像这样全局修补 fs
:
var realFs = require('fs')
var gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(realFs)
我的 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)
试试这个作为 fs
:
像这样全局修补 fs
:
var realFs = require('fs')
var gracefulFs = require('graceful-fs')
gracefulFs.gracefulify(realFs)