我在我的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']);
});
这一切都很好地工作,直到我编写导致浏览错误的代码为止。当我在一个文件中编辑代码取决于我尚未在另一个文件中进行的更改,浏览错误。
时,这种情况经常发生。问题是,当浏览错误输出时,它会结束手表任务。我希望,当浏览错误时,它根本无法完成任务,但是手表将继续下去,以便当我进行其他更改以允许浏览成功运行时,它将这样做。进行更改,然后重新加载浏览器并发现该手表过程在您的代码处于错误状态时由于浏览错误而结束是有问题的。
有没有办法吞咽该错误,以免停止手表过程?还是还有另一个NPM软件包观看文件,并且不会被浏览错误绊倒吗?
如果您不处理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));
对于浏览流,您需要在错误处理程序中调用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));
});