为什么 gulp 没有完成我的任务就退出了?

Why does gulp quit without finishing my task?

我有以下 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/'));
});

哪个正在尝试编译这个 jade 文件:

#{something.anything}

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

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

$

并且没有生成输出文件。

我显然在这里遗漏了一些明显的东西,但我不知道是什么。搜索 'gulp task not finishing' 等只会产生很多讨论永远不会完成的任务的结果。

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

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

为什么 gulp 任务没有完成就退出了,而且似乎没有任何错误?

问题是,您的 .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/'));
});

如果您有兴趣,这里有一些关于此的更多详细信息error management problem in gulp