【问题标题】:Browserify errors ending gulp watch taskBrowserify 错误结束 gulp watch 任务
【发布时间】:2015-05-06 13:00:56
【问题描述】:

我的 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 错误的代码之前,这一切都运行良好。这种情况经常发生,因为我在一个文件中编辑依赖于我尚未在另一个文件中进行的更改的代码,浏览器化错误。

问题在于,当 browserify 出错时,它会结束 watch 任务。我希望当 browserify 出错时,它根本不会完成它的任务,但手表会继续,这样当我进行其他更改以允许 browserify 成功运行时,它就会这样做。进行更改然后重新加载浏览器并发现它不起作用只是在您的代码处于错误状态时发现由于 browserify 错误而导致监视过程结束是有问题的。

有没有办法消除该错误,使其不会停止监视过程?或者是否有另一个 npm 包可以监视文件并且不会被 browserify 错误绊倒?

【问题讨论】:

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


【解决方案1】:

如果您不处理 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 时遇到的问题是我看的不是正确的流。
  • 这一行为我做了:.on('error', console.error.bind(console))。 Gulp 管道工和任何对我不起作用的东西,
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2015-03-11
    • 2015-07-14
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多