【问题标题】:gulp-ruby-sass Error handlinggulp-ruby-sass 错误处理
【发布时间】:2014-08-23 11:11:17
【问题描述】:

有谁知道如何处理 gulp-ruby-sass 中的错误。我注意到它在出现错误时直接输出到控制台,但我想自己处理它。

gulp.task('styles', function () {
  return gulp.src(sources.sass.files)
    .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))
    .pipe(
        plugins.rubySass({
            lineNumbers: true,
            style: 'expanded',
            sourcemap: true,
            sourcemapPath: '../../dev/sass'
        })
    )
    .on("error", function(err) {
        console.log(err);
    })
    .pipe(gulp.dest(sources.sass.dest));
});

如您所见,我在这里尝试了两种不同的方法来处理我的错误,但它们都不起作用。如果我尝试.on("error", console.log('error')) 可以,但它告诉我“监听器必须是一个函数”。

提前致谢。

【问题讨论】:

    标签: sass pipe gulp


    【解决方案1】:

    你也可以使用我发布的一个包,pipe-error-stop,如下:

    pipeErrorStop = require('pipe-error-stop');
    
    // in the task
    .pipe(pipeErrorStop(rubySass()))
    

    如果rubySass 发出错误,则不会有数据进一步向下传递。这可以防止您在 sass 中出现语法错误并在主页上找到堆栈跟踪。

    pipeErrorStop 也有可以用来挂钩的回调。

    【讨论】:

      【解决方案2】:

      使用gulp-plumber 可能会对您有所帮助,看看这个blogpost

      它可以让你这样做:

      var onError = function (err) {  
        // whatever you need to do
      };
      
      gulp.task('styles', function () {  
        gulp.src('scss/style.scss')
          .pipe(plumber({
            errorHandler: onError
          }))
          .pipe(rubysass())
          .pipe(gulp.dest('dist/'));
      });
      

      【讨论】:

      • 我在那个例子中已经有了 gulp-plumber,不幸的是它不起作用。 :( 它不调用错误处理程序。
      • 好的,它确实有效,但错误处理程序仅通过undefined
      • sources看来,插件在内部处理错误
      • 正是我害怕的:(
      • 您是否尝试过使用trace 选项?它可能会让您更好地理解它失败的原因(但不幸的是在标准输出中)
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 1970-01-01
        • 2014-08-28
        • 2015-03-25
        • 1970-01-01
        • 2016-09-18
        • 2015-01-14
        • 1970-01-01
        • 2015-01-20
        相关资源
        最近更新 更多