Слесарь-сантехник, уведомление и пользовательская функция ошибок дают мне сообщение об ошибке в плагине 'сантехник': Сообщение: не удается передать до неопределенного

Я создаю стартовое приложение Wordpress для тем в node, gulp, а также в руле для создания шаблонов.

У меня проблема с совместными плагинами plumber, notify и gulp-sass.

Вот ссылка на мой репо: https://github.com/elassol/wp-theme

каждый раз, когда я пытаюсь скомпилировать sass с моей задачей gulp, я получаю сообщение об ошибке:

Ошибка в плагине 'сантехник' Сообщение: невозможно передать по трубопроводу к неопределенному

У меня есть функция ошибок Pumbler, SASS TASK для предварительной обработки sass и задача gulp watch для запуска sass taks при изменении файла.

   

var gulp         = require('gulp');
var gutil        = require('gulp-util');
var autoprefixer = require('gulp-autoprefixer');
var sass         = require ('gulp-sass');
var plumber      = require('gulp-plumber');
var notify       = require('gulp-notify'); 
var browserSync  = require('browser-sync'); 
var cache        = require('gulp-cache');
var imageOpt     = require('gulp-image-optimization');
var jshint       = require('gulp-jshint');
var useref       = require('gulp-useref'); 
var uglify       = require('gulp-uglify'); 
var gulpIf       = require('gulp-if');
var clean        = require('gulp-clean');
var cssnano      = require('gulp-cssnano');
var concat       = require('gulp-concat');
var del          = require('del');
var runSequence  = require('run-sequence');
var sourcemaps   = require('gulp-sourcemaps');
var fs           = require('fs'); 

// ==========================================================
// Pumbler error function
// ==========================================================


function customPlumber(errTitle) { 
  return plumber({
    errorHandler: notify.onError({
          // Customizing error title
          title: errTitle || "Error running Gulp",
          message: "Error: <%= error.message %>",
          sound: "Glass"
        })
    });
}


// ==========================================================
// STYLES TASK
// ==========================================================

gulp.task('sass', function(){
    return  gulp.src(paths.styles.src + '**/*.scss')
       
        .pipe(customPlumber('Error Running Sass'))

        // inititalizr sourcemap before anyother pluging that alter  files
        .pipe(sourcemaps.init())
        .pipe(sass({
            includePaths: ['theme/bower_components'],
            precision: 2
        }))
        .pipe(autoprefixer({
          browsers: ['ie 8-9', 'last 2 versions']
        }))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest(paths.styles.build))
        .pipe(browserSync.reload())
        
})

// ==========================================================
//  WATCH TASK
// ==========================================================
 
gulp.task('watch', ['browserSync'], function(){ 
    gulp.watch(basePaths.src + 'sass/**/*.scss', ['sass']);
    gulp.watch(paths.scripts.src + '**/*.js', browserSync.reload);
    gulp.watch('theme/*.html', browserSync.reload);
    gulp.watch('theme/js/**/*.js', ['jshint']);
})

Любые идеи, что я делаю неправильно или, по крайней мере, указывают мне правильное направление?

Заранее спасибо людям!

1 ответ

Решение

Пользовательская функция ошибок не выдает ошибку. в трубопроводе есть неопределенная труба. Кажется, неопределенный канал в строках sourcemaps. Вы должны требовать gulp-sourcemaps.


после редактирования: в этом случае вы должны изменить

  .pipe(sync.reload());

линия как это

  .pipe(sync.reload({stream:true}));

дополнительное объяснение

в задании глотка должен быть поток через трубопровод. каждый канал должен возвращать объект потока для передачи потока следующему каналу.

на первой версии вашего кода; sync, нарушая цикл потока, потому что метод перезагрузки ничего не возвращает. и глоток выбрасывает ошибку по этой причине. Свойство stream: true пытается ввести потоки и вернуть входящий поток обратно. это оно.

на самом деле вы можете использовать sync.stream() вместо sync.reload(). или если вы не хотите вводить ваши стили, вы можете применить, как в этом примере

https://www.browsersync.io/docs/gulp/

Другие вопросы по тегам