浏览器同步在gulp中不重载。

问题描述 投票:0回答:1

我在终端中运行gulp serve,弹出窗口。但是,当我在.html中进行更改时,这些更改并没有重新加载到页面上。我不知道什么是异步完成,因为这是我第一次收到这个错误。

[BS] Local URL: http://localhost:3000
[BS] External URL: http://10.0.0.58:3000
[BS] Serving files from: temp
[BS] Serving files from: dev
[BS] Serving files from: dev/html
^C[15:49:48] The following tasks did not complete: serve
[15:49:48] Did you forget to signal async completion?
let serve = () => {
    browserSync({
        notify: true,
        reloadDelay: 0, // A delay is sometimes helpful when reloading at the
        server: {       // end of a series of tasks.
            baseDir: [
                `temp`,
                `dev`,
                `dev/html`
            ]
        }
    });
    watch(`dev/html/**/*.html`, series(validateHTML)).on(`change`, reload);
    watch(`dev/js/*.js`, series(lintJS, compressJS)).on(`change`, reload);
    watch (`dev/css/**/*.css`, series(compressCSS)) .on(`change`, reload);
};

javascript gulp browser-sync
1个回答
0
投票

Gulp 4要求每个任务都要完成,这样它才能继续按照指定的顺序运行其他任务(比如并行或串联)。

你得到那个致命的错误是因为你的 serve 任务缺失 done 回调,让gulp知道你已经准备好开始队列中的下一个任务。

更多信息在这里。Gulp的 "done "方法是做什么的?

下面是一个更新版本的 serve 任务,这将允许它继续并发运行而不会导致致命的错误。

let serve = (done) => { // add done as an argument
    browserSync({
        notify: true,
        reloadDelay: 0, // A delay is sometimes helpful when reloading at the
        server: {       // end of a series of tasks.
            baseDir: [
                'temp',
                'dev',
                'dev/html'
            ]
        }
    });
    watch('dev/html/**/*.html', series(validateHTML)).on('change', reload);
    watch('dev/js/*.js', series(lintJS, compressJS)).on('change', reload);
    watch ('dev/css/**/*.css', series(compressCSS)) .on('change', reload);
    done();  // call the done method when you are ready to move onto the next task.
};
© www.soinside.com 2019 - 2024. All rights reserved.