为什么Gulp在未完成我的任务时就退出了?

5
我有以下的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}

但是当我尝试运行该任务时,jade任务未能完成就退出了:

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

$

没有生成任何输出文件。
我显然漏掉了一些显而易见的东西,但我无法确定是什么。搜索“gulp任务不完成”之类的内容只会产生很多讨论永远不会完成的任务的结果。
我正在运行最新版本的gulp、gulp-jade和gulp-data(3.8.11、1.0.0和1.2.0)。
如果我删除对数据的管道,一切都能正常工作。我尝试修改对数据的调用,甚至像gulp-data示例中那样要求一个有效的json文件,但它仍然无法工作。
为什么gulp在没有完成任务且似乎没有任何错误的情况下退出?
1个回答

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/'));
});

如果您感兴趣,这里有关于gulp中错误管理问题的更多细节。


注释[已移至讨论区](http://chat.stackoverflow.com/rooms/71619/discussion-between-code-bling-and-chris-montgomery) - Codebling
1
简短概括:始终处理错误。 - Sgnl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接