Browserify错误结束gulp watch任务

时间:2015-05-06 13:00:57

标签: javascript node.js gulp browserify gulp-watch

我在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软件包可以监视文件,并且不会因browserify错误而被绊倒?

2 个答案:

答案 0 :(得分:9)

如果您不处理error事件,则会抛出流。您可以直接处理该事件:

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));

答案 1 :(得分:0)

对于Browserify流,您需要在错误处理程序中调用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));
});