Gulp 4.浏览器同步问题//以下任务未完成:浏览器同步

时间:2019-01-07 15:20:29

标签: javascript html css gulp

不了解该错误是什么,在gulp 4中没有真正阅读有关浏览器同步的文档。在gulp 4的文档中也看不懂(async)。如何解决这个问题。谢谢。   bla bla bla bla bla bla bla bla bla bla bla bla

 'default' errored after 23 ms
 The following tasks did not complete: browser-sync
 Did you forget to signal async completion?

var gulp        = require('gulp'),
      gutil         = require('gulp-util' ),
      sass          = require('gulp-sass'),
      browserSync   = require('browser-sync'),
      concat        = require('gulp-concat'),
      uglify        = require('gulp-uglify'),
      cleancss      = require('gulp-clean-css'),
      rename        = require('gulp-rename'),
      autoprefixer  = require('gulp-autoprefixer'),
      notify        = require('gulp-notify');

gulp.task('browser-sync', function() {
    browserSync({
        server: {
            baseDir: 'app'
        },
        notify: false,
        // open: false,
        // online: false, // Work Offline Without Internet Connection
        // tunnel: true, tunnel: "projectname", // Demonstration page: http://projectname.localtunnel.me
    })
});

gulp.task('styles', function() {
    return gulp.src('app/'+syntax+'/**/*.'+syntax+'')
    .pipe(sass({ outputStyle: 'expanded' }).on("error", notify.onError()))
    .pipe(rename({ suffix: '.min', prefix : '' }))
    .pipe(autoprefixer(['last 15 versions']))
    .pipe(cleancss( {level: { 1: { specialComments: 0 } } }))
    .pipe(gulp.dest('app/css'))
    .pipe(browserSync.stream())
});

gulp.task('scripts', function() {
    return gulp.src([
        'app/libs/jquery/dist/jquery.min.js',
        'app/js/common.js',
        ])
    .pipe(concat('scripts.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('app/js'))
    .pipe(browserSync.reload({ stream: true }))
});

gulp.task('code', function() {
    return gulp.src('app/*.html')
    .pipe(browserSync.reload({ stream: true }))
});


    gulp.task('watch', function() {
        gulp.watch('app/'+syntax+'/**/*.'+syntax+'', gulp.parallel('styles'));
        gulp.watch(['libs/**/*.js', 'app/js/common.js'], gulp.parallel('scripts'));
        gulp.watch('app/*.html', gulp.parallel('code'))
    });
    gulp.task('default', gulp.parallel('watch', 'browser-sync'));

1 个答案:

答案 0 :(得分:0)

改为使用此:

gulp.task('browser-sync', function(done) {
    browserSync({
        server: {
            baseDir: 'app'
        },
        notify: false,
        // open: false,
        // online: false, // Work Offline Without Internet Connection
        // tunnel: true, tunnel: "projectname", // Demonstration page: http://projectname.localtunnel.me
    });
    done();
});

请注意done,这是指示浏览器同步设置任务完成的简便方法。参见callback to signal async completion


有关@Dirk关于不使用.create()的评论,请参见

  

发布2.0.0语法(推荐)

     

尽管以上内容仍受支持[ed。 no create()],我们现在建议以下内容   代替。调用.create()意味着您将获得唯一的引用并允许   您可以创建多个服务器或代理。

来自api documentation

因此,使用create可以打开browserSync的多个实例-提供不同的文件或监视/重新加载不同的文件-但在较简单的情况下则不需要。