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

时间:2015-02-24 20:30:50

标签: pug gulp

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

试图编译这个玉文件:

#{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退出而没有完成任务,似乎没有任何错误?

1 个答案:

答案 0 :(得分: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/'));
});

如果您有兴趣,请参阅以下error management problem in gulp的更多详细信息。