为什么gulp在没有完成任务的情况下退出?

Cod*_*ing 5 gulp pug

我有以下gulp任务:

var jade = require('gulp-jade');
var data = require('gulp-data');

gulp.task('jade', function(done) {
  return gulp.src(paths.jade)
    .pipe(data(function(){}))
    .pipe(jade())
    .pipe(gulp.dest('./www/templated/'));
});
Run Code Online (Sandbox Code Playgroud)

哪个尝试编译这个玉文件:

#{something.anything}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行任务时,玉器任务退出而没有完成:

$ gulp jade
[14:39:24] Using gulpfile ~/path/gulpfile.js
[14:39:24] Starting 'jade'...

$
Run Code Online (Sandbox Code Playgroud)

并且不生成输出文件.

我显然遗漏了一些明显的东西,但我不知道是什么.搜索"gulp task not finishing"之类的内容只会产生大量讨论永不完成的任务的结果.

我正在运行最新版本的gulp,gulp-jade和gulp-data(3.8.11,1.0.0和1.2.0).

如果我将管道移除到数据,一切正常.我已经尝试修改对数据的调用,甚至需要像gulp-data示例中那样有效的json文件,但它仍然无法工作.

为什么在没有完成任务的情况下退出并且没有看似任何错误?

Chr*_*ery 6

问题是,你的.jade文件中有一个错误导致gulp-jade抛出错误.理想情况下,gulp-jade会抛出一个更友好的gulp错误,为您提供更多信息,而不仅仅是一个空白屏幕,但是,由于它不是,您需要自己处理此错误.您可以gulp-plumber手动使用或处理直接来自该特定管道的错误,如下所示:

var gutil = require('gulp-util');

gulp.task('jade', function() {
  return gulp.src(paths.jade)
    .pipe(jade())
    .on('error', gutil.log)
    .pipe(gulp.dest('./www/templated/'));
});
Run Code Online (Sandbox Code Playgroud)

如果您有兴趣,请参阅gulp中有关此错误管理问题的更多详细信息.