Browser-sync TypeError args.cb不是函数

时间:2016-02-23 14:59:20

标签: npm gulp browser-sync gulp-watch

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

db.restaurants.find( { $and: [ {borough: "Queens" }, { cuisine: "American" } ] } )

我在gulp watch中使用这个gulp任务(例如)gulp.task('gulp-task',function(){ browserSync.init({ server:{ baseDir: 'app' } }) //rest of task }); ,如:

app/**/*.html

第一次更改html文件一切正常但是对于下一次更改我得到错误: gulp.task('watch',function(){ gulp.watch('app/**/*.html', ['gulp-task']); });

伙计们说要用以下命令安装最新版本的浏览器同步:

TypeError: args.cbn is not a function  ...

并没有帮助。

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

3 个答案:

答案 0 :(得分:3)

我也遇到了这个问题并通过从监视任务中的回调中删除括号来解决它。

尝试将观看任务更改为:

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

答案 1 :(得分:2)

在阅读浏览器同步文档后,我发现方法.init( config, cb )两个参数。所以,将代码更改为:

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

答案 2 :(得分:2)

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

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