对于像这样的新开发者来说,我们的Gulp构建过程失败了:
events.js:85
throw er; // Unhandled 'error' event
^
Error: EMFILE, open '[some filename]'
at Error (native)
解决方案是运行:
ulimit -n 2048
所以我想抓住EMFILE
错误并将其替换为更友好的消息。但是,即使将整个gulpfile.js
包裹在try/catch
中,也似乎不包含它。
答案 0 :(得分:1)
事实证明,围绕一切包裹try/catch
并不起作用,因为错误发生在(全部)代码执行之后。在每个管道中注入一个错误处理程序:
function onError(e) {
if (e.code === 'EMFILE') {
console.error('Too many open files. You should run this command:\n ulimit -n 2048');
process.exit(1);
}
gutil.log(e.message);
process.exit(1);
}
...
var result = bundler.bundle();
result = result
.on('error', onError)
.pipe(source(name))
.pipe(buffer());