浏览器同步 TypeError args.cb 不是函数

Browser-sync TypeError args.cb is not a function

我在 gulp 任务中使用浏览器同步,例如:

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

我在 gulp 中使用这个 gulp 任务,注意(例如)app/**/*.html,例如:

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

第一次更改 html 文件一切正常,但下次更改时出现错误: TypeError: args.cbn is not a function ...

大家说要使用以下命令安装最新版本的浏览器同步:

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

这并没有帮助。

我遇到了同样的错误。怎么了?

我也 运行 解决了这个问题,并通过从 watch 任务的回调中删除括号解决了这个问题。

尝试将您的监视任务更改为:

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

或者更好的是,尝试使用像这样的重新加载方法:

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

看了browser-sync的文档后,我注意到方法.init( config, cb )两个参数。所以,把你的代码改成这样:

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

在定义 'watch' 时,我们需要在 watch 之前声明所有任务需要 运行,这将解决问题。 需要在监视任务参数列表中添加带有预先计划任务的额外参数。

gulp.task('watch', ['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']); 
})