Gulp 无声吞咽失败-控制台上未打印任何错误

Gulp 无声吞咽失败-控制台上未打印任何错误,gulp,Gulp,我的gulp文件没有在标准gulp方法(如gulp.src())上发出任何错误,并且路径不存在,流错误也没有被它们的处理程序调用。我已经包括了一个简单的文件,它会自动失败,只打印开始的。。完成了。。默认消息 var // gulp = require( "gulp" ), gulpUtil = require( "gulp-util" ), sass = require( "gulp-ruby-sass"); gulp.task( "default", f

我的gulp文件没有在标准gulp方法(如gulp.src())上发出任何错误,并且路径不存在,流错误也没有被它们的处理程序调用。我已经包括了一个简单的文件,它会自动失败,只打印开始的。。完成了。。默认消息

var //
  gulp      = require( "gulp" ),
  gulpUtil  = require( "gulp-util" ),
  sass      = require( "gulp-ruby-sass");


 gulp.task( "default", function() {
  gulp.src( "path-that-does-not-exist.scss" )
  .pipe( sass() )
  .on( "error", function( err ) {
    console.log( "this should print" );
  })
  .pipe( gulp.dest( "./client-side/public/compiled" ) );
 });

如果路径不存在,则gulp.src将完全不通过管道成功地推送任何内容,sass和dest任务将不会被成功调用,这样,gulp.src的流将结束,表示默认任务已完成,gulp将退出。它完全按照你告诉它的做了D

好的,那么Gulp工作“正确”。但我在你的问题中听到的是,如果Gulp能告诉你一个文件是否不存在,那就太好了

我用的就是这样

现在您将在终端中看到:


我同意@AdamGrant的使用

PS:Grunt.js使用
nonull:true

lint: {
    src: ['gruntfile.js', 'gulpfile.js'],
    nonull: true
}

如果文件不存在,那么流就不会被处理。我不确定你期望在这里发生什么。大概你想要一种检测路径是否存在的方法,对吗?如果不在“错误”事件上,则是其他事件。您可以在任务顶部放置一个标志,例如anyData=false;然后在链中将其设置为true,然后查看.on('end',function(){})是否已设置。如果没有,则引发错误。这有点不正常,您可能只想使用fs:)检查文件是否存在。请注意,它不会阻止gulp继续,所以请查看控制台!
var expect = require('gulp-expect-file'),
    gulp = require('gulp');

gulp.task('task', function() {
    var files = ['src/js/*.js'];
    gulp
        .src(files)
        .pipe(expect(files));
});
lint: {
    src: ['gruntfile.js', 'gulpfile.js'],
    nonull: true
}