2016-02-23 26 views
7

Sto utilizzando il browser-sync nel compito fiato ad esempio:Browser-sync TypeError args.cb non è una funzione

gulp.task('gulp-task',function(){ 
    browserSync.init({ 
     server:{ 
      baseDir: 'app' 
     } 
    }) 
    //rest of task 
}); 

Io uso questo compito sorso in sorso orologio per (ad esempio) app/**/*.html come:

gulp.task('watch',function(){ 
    gulp.watch('app/**/*.html', ['gulp-task']); 
}); 

per il cambiamento prima volta nel file html tutto è ok, ma per i prossimi cambiamenti ottengo l'errore: TypeError: args.cbn is not a function ...

ragazzi hanno detto di installare la versione di prova per la sincronizzazione del browser con il comando seguente:

npm install [email protected] --save-dev 

e non ha aiutato.

ma sto ricevendo lo stesso errore. Cosa c'è che non va?

+1

Hai trovato una soluzione ? – IanEdington

risposta

1

Mi sono anche imbattuto in questo problema e l'ho risolto rimuovendo le parentesi dal callback nell'attività di controllo.

provare a cambiare il vostro compito orologio a:

gulp.task('watch',function(){ 
    gulp.watch(['app/**/*.html'], 'gulp-task'); 
}); 

O meglio ancora, provare a utilizzare il metodo di ricarica con qualcosa di simile:

var gulp  = require('gulp'); 
var browserSync = require('browser-sync').create(); 
var jshint  = require('gulp-jshint'); 
var watch  = require('gulp-watch'); 
var reload  = browserSync.reload; 

gulp.task('default', ['jshint', 'serve', 'watch']); 

gulp.task('jshint', function() { 
    return gulp.src('src/app/**/*.js') 
      .pipe(jshint()) 
      .pipe(jshint.reporter('jshint-stylish')); 
}); 

// Static server 
gulp.task('serve', function() { 
    browserSync.init({ 
     server: { 
      baseDir: "./src" 
     } 
    }); 
}); 

gulp.task('watch', function() { 
    gulp.watch(['src/**/*.html', 'src/app/**/*.js'], reload); 
}); 
2

Dopo aver letto il documento del browser sync, ho notato che il metodo .init(config, cb) ha due parametri .so, modificare il codice a questo:

gulp.task('gulp-task',function(){ 
    browserSync.init({ 
     server:{ 
      baseDir: 'app' 
     } 
    }) 
    //rest of task 
},function(){ 
    // something you want to do 
}); 
+0

Grazie! Potresti anche solo analizzare 'null'. – NinjaFart

2

Durante la definizione dell '"orologio" è necessario dichiarare che tutte le attività devono essere eseguite prima di guardare, questo risolve il problema. Il parametro aggiuntivo con attività prepianificate deve essere aggiunto nell'elenco dei parametri dell'attività di controllo.

gulp.task ('orologio', [ 'browserSync', 'sass'], function() {...})

var gulp = require('gulp'); 
 
var sass = require('gulp-sass'); 
 
var browserSync = require('browser-sync').create(); 
 

 
gulp.task('hello', function() { 
 
    console.log('Hello Gulp-Shash'); 
 
}); 
 

 
gulp.task('sass', function(){ 
 
    return gulp.src('app/scss/**/*.scss') 
 
    .pipe(sass()) 
 
    .pipe(gulp.dest('app/css')) 
 
    .pipe(browserSync.reload({ 
 
     stream: true 
 
    })) 
 
}); 
 

 
gulp.task('browserSync', function() { 
 
    browserSync.init({ 
 
    server: { 
 
     baseDir: 'app' 
 
    }, 
 
    }) 
 
}) 
 

 
gulp.task('watch', ['browserSync', 'sass'], function(){ 
 
    gulp.watch('app/scss/**/*.scss', ['sass']); 
 
})

Problemi correlati