使用gulp时发生[Did you forget to signal async completion?]

今天学习gulp时遇到了这个错误,写的和老师的一样却报了错,然后百度了十年,从官网发现上面写着:
gulp 不再支持同步任务(Synchronous tasks)
gulp 不再支持同步任务(Synchronous tasks)了。因为同步任务常常会导致难以调试的细微错误,例如忘记从任务(task)中返回 stream。

当你看到 “Did you forget to signal async completion?” 警告时,说明你并未使用前面提到的返回方式。你需要使用 callback 或返回 stream、promise、event emitter、child process、observable 来解决此问题。

错误原因

当从任务(task)中返回 stream、promise、event emitter、child process 或 observable 时,成功或错误值将通知 gulp 是否继续执行或结束。如果任务(task)出错,gulp 将立即结束执行并显示该错误。

意思就是需要再运行完代码之后,通知gulp 是否继续执行或结束。

如何通知gulp 是否继续执行或结束呢?下面介绍两种比较方便的方法:

1.返回 stream、promise、event emitter、child process、observable,意思就是将代码返回,如:

const { src, dest } = require('gulp');
gulp.task('first', () => {
    console.log('这是人生中第一个任务');
    return gulp.src('./src/表格练习.html')
        .pipe(gulp.dest('dist/html'))

});

2.初次之外还可以使用callback 回调函数通知通知 gulp 是否继续执行或结束:
如果任务(task)不返回任何内容,则必须使用 callback 来指示任务已完成。
即,在使用任务时,在任务函数中传递一个参数,然后再代码最下方,执行这个参数,如:

const gulp = require('gulp');
gulp.task('first', (cb) => {
    console.log('这是人生中第一个任务');
    
    cb();
});
发布了8 篇原创文章 · 获赞 0 · 访问量 113

猜你喜欢

转载自blog.csdn.net/qq_43915356/article/details/105187712
今日推荐