Search code examples
npmgulpbrowser-syncgulp-watch

Browser-sync TypeError args.cb is not a function


I'm using browser-sync in gulp task for example :

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

I use this gulp task in gulp watch for( for example ) app/**/*.html like :

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

for first time change in html files everything is ok but for next changes i get error: TypeError: args.cbn is not a function ...

guys said to install latest version for browser-sync with command below :

npm install browser-sync@latest --save-dev

and it doesn't helped.

I'm getting the same error. what's wrong?


Solution

  • I also ran into this issue and solved it by removing the brackets from the callback in the watch task.

    Try changing your watch task to:

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

    Or better yet, try using the reload method with something like this:

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