【问题标题】:Why is gulp throwing "Did you forget to signal async completion?"为什么 gulp 会抛出“您是否忘记发出异步完成信号?”
【发布时间】:2021-08-11 15:37:07
【问题描述】:

我有以下 gulp 文件,它可以正常工作几个月,直到今天早上:

//gulpfile.js
const gulp = require('gulp')
const { series } = require('gulp')
const rename = require('gulp-rename')
const uglify = require('gulp-uglify')
const sass = require('gulp-sass')(require('sass'))

function minJs() {
    return gulp
        .src('./dev/js/script.js')
        .pipe(uglify())
        .pipe(
            rename({
                extname: '.min.js'
            })
        )
        .pipe(gulp.dest('./build/js/'))
}
exports.minJs = minJs

function minCss() {
    return gulp
        .src('./dev/css/style.sass')
        .pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError))
        .pipe(
            rename({
                extname: '.min.css'
            })
        )
        .pipe(gulp.dest('./build/css/'))
}
exports.minCss = minCss

exports.test = () => {
    series(minCss, minJs)
}

每次我运行“Gulp 测试”时都会出现以下错误:

[11:17:59] Starting 'test'...
[11:17:59] The following tasks did not complete: test
[11:17:59] Did you forget to signal async completion?

我尝试为这两个任务添加回调并尝试将它们更改为异步函数,但都没有解决问题。我不知道为什么我会收到这个错误,因为我正在返回一个流。

感谢任何帮助!

【问题讨论】:

  • 你试过returning series 函数导致exports.test吗?
  • 你试过exports.test = series(minCss, minJs)吗?以我的经验,这就是你使用series 的方式——用闭包包装是有问题的。
  • @edemaine 谢谢!我不知道为什么我会这样,但它现在似乎可以工作了。
  • @alexyoe 你并不孤单——我多次犯过同样的错误。 :-)

标签: javascript gulp


【解决方案1】:

gulp.series 实际上是一个高阶规则,即它从规则中产生一个规则,所以不应该被包裹在一个闭包中:

exports.test = series(minCss, minJs);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多