繁体   English   中英

Browserify错误结束gulp watch任务

[英]Browserify errors ending gulp watch task

我在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错误而被绊倒?

如果您不处理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));

对于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));
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM