Browserify错误结束吞噬观察任务

我在我的gulpfile.js中有以下设置:

gulp.task('browserify', function() { browserify(config.paths.browserifyEntry) .transform(reactify) .bundle() .pipe(source('master.js')) .pipe(gulp.dest(config.paths.dist)) //.pipe(connect.reload()); }); gulp.task('watch', function () { gulp.watch(config.paths.components, ['browserify']); gulp.watch(config.paths.sassSource, ['sass']); }); 

这一切都工作完美,直到我写代码导致浏览错误。 这经常发生,因为我正在编辑一个文件中的代码,这个文件依赖于我还没有在另一个文件中做出的更改,并将错误浏览出来。

问题是,当浏览错误结束了观看任务。 我会期望,当浏览错误,它只是没有完成它的任务,但手表将继续,所以当我做了其他更改,这将允许browserify成功运行它会这样做。 这是有问题的做出更改,然后重新加载浏览器,并发现它不能工作,只是发现由于检查错误,当你的代码是在一个错误的状态观察过程结束。

是否有办法吞下该错误,以便它不会停止监视过程? 还是有另一个NPM包,观看文件,并不会被浏览错误绊倒?

如果您不处理error事件,则stream将抛出。 你可以直接处理事件:

 gulp.task('browserify', function() { browserify(config.paths.browserifyEntry) .transform(reactify) .bundle() .on('error', console.error.bind(console)) .pipe(source('master.js')) .pipe(gulp.dest(config.paths.dist)); }); 

或者你可以捕捉错误后抛出:

 process.on('uncaughtException', console.error.bind(console)); 

对于Browserifystream,您需要在error handling程序中调用emit

 gulp.task('browserify', function() { browserify(config.paths.browserifyEntry) .transform(reactify) .bundle() .on('error', function (error) { console.error(error.toString()) this.emit('end') }) .pipe(source('master.js')) .pipe(gulp.dest(config.paths.dist)); });