Browserify错误结束gulp watch任务

jda*_*vis 8 javascript node.js browserify gulp 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']);
});
Run Code Online (Sandbox Code Playgroud)

这一切都很有效,直到我编写的代码导致浏览器出错.这种情况经常发生,因为我在一个文件中编辑代码,这取决于我还没有在另一个文件中进行的更改,浏览器出错.

问题是当浏览器出错时,它结束了监视任务.我希望当浏览器出错时,它根本无法完成它的任务,但是手表会继续,以便当我进行其他更改以使browserify成功运行时,它会这样做.进行更改然后重新加载浏览器并发现当代码处于错误状态时,由于浏览器化错误导致监视进程结束,这是有问题的.

有没有办法吞下这个错误,以免它停止监视过程?或者是否有另一个npm软件包可以监视文件并且不会因browserify错误而被绊倒?

Ben*_*Ben 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));
});
Run Code Online (Sandbox Code Playgroud)

或者你可以在它抛出后捕获错误:

process.on('uncaughtException', console.error.bind(console));
Run Code Online (Sandbox Code Playgroud)