gulp browsersync的错误

时间:2017-04-24 18:03:28

标签: javascript gulp browser-sync

我下面有一些gulpfile.js,有些不对劲。确切地说,当我在终端输入gulp时会出现错误: 614μs后,'browserSync'出错 [20:52:42]

   TypeError: args.cb is not a function
   at Object.init 
   at Gulp.<anonymous> 
   at module.exports 
   at Gulp.Orchestrator._runTask 
   at Gulp.Orchestrator._runStep 
   at Gulp.Orchestrator.start 
   at Gulp.<anonymous> 
   at module.exports 
   at Gulp.Orchestrator._runTask 
   at Gulp.Orchestrator._runStep 

我的gulpfile.js

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

            var src = {
            html:['./app/index.html'],
            js:['./app/js/app.js']
            };

            var sassOptions = {
                errLogToConsole: true,
                outputStyle: 'expanded'
            };

            var autoprefixerOptions = {
                browsers: ['last 15 versions', '> 5%', 'Firefox ESR']
            };

            jshint: {
              options: {
                node: true
              }
            }

            //tasks
            gulp.task('default', ['watch'], function(){
                gulp.start('watch');
            });

            gulp.task('lint', function() {
                return gulp.src('./app/js/app.js')
                        .pipe(jshint())
                        .pipe(jshint.reporter('default'));
            });

            gulp.task('browserSync', function() {
                browserSync.init({
                    server: {
                        baseDir: 'app',
                        index: 'index.html'
                    },
                    port: 3000,
                    open: true
                });
            });

            gulp.task('sass', function() {
                return gulp.src('app/scss/**/*.scss')
                    .pipe(sass(sassOptions).on('error', sass.logError))
                    .pipe(autoprefixer(autoprefixerOptions))
                    .pipe(sassdoc())
                    .pipe(gulp.dest('app/css'))
                    .pipe(browserSync.reload({
                        stream: true
                    }))
            });

            gulp.task('html', function(){
                gulp.src(src.html)
                    .pipe(browserSync.reload({
                        stream: true
                    }))
            });

            gulp.task('js', function(){
                gulp.src(src.js)
                    .pipe(browserSync.reload({
                        stream: true
                    }))
            });

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

事情是一切正常,除了它不直接打开index.html文件,只是空浏览器窗口。有人能告诉我错误有什么问题并直接打开index.html文件吗?

2 个答案:

答案 0 :(得分:0)

也许试试这个:

gulp.task('browserSync', function(done) {
            browserSync.init({
                server: {
                    baseDir: 'app',
                    index: 'index.html'
                },
                port: 3000,
                open: true
            });
            done();
        });

只是一个快速的猜测,这就是我的设置和运作方式。您的错误消息表明它可能正在寻找回叫功能。

答案 1 :(得分:0)

我认为您不应将watch作为default的依赖,并在函数中调用它。

也许只用这个替换default

//tasks
gulp.task('default', ['watch']);