我有以下gulpfile.js,我通过命令行gulp消息执行:

var gulp = require('gulp');

gulp.task('message', function() {
  console.log("HTTP Server Started");
});

我得到以下错误消息:

[14:14:41] Using gulpfile ~\Documents\node\first\gulpfile.js
[14:14:41] Starting 'message'...
HTTP Server Started
[14:14:41] The following tasks did not complete: message
[14:14:41] Did you forget to signal async completion?

我在Windows 10系统上使用gulp 4。下面是gulp——version的输出:

[14:15:15] CLI version 0.4.0
[14:15:15] Local version 4.0.0-alpha.2

当前回答

在gulp版本4及更高版本中,要求所有gulp任务都告诉gulp任务将在何处结束。为此,我们调用一个函数,该函数作为任务函数中的第一个参数传递

var gulp = require('gulp');
gulp.task('first_task', function(callback) {
  console.log('My First Task');
  callback();
})

其他回答

在默认函数中添加done作为参数。这样就行了。

对于那些试图使用gulp进行本地部署的人,下面的代码将有所帮助

var gulp = require("gulp");
var yaml = require("js-yaml");
var path = require("path");
var fs = require("fs");

//Converts yaml to json
gulp.task("swagger", done => {
    var doc = yaml.safeLoad(fs.readFileSync(path.join(__dirname,"api/swagger/swagger.yaml")));
    fs.writeFileSync(
        path.join(__dirname,"../yourjsonfile.json"),
        JSON.stringify(doc, null, " ")
        );
    done();
});

//Watches for changes    
gulp.task('watch', function() {
  gulp.watch('api/swagger/swagger.yaml', gulp.series('swagger'));  
});

我不能说我在这方面很有知识,但我也遇到过同样的问题,并且已经解决了。

解决这个问题的第七种方法是使用async函数。

编写函数时,要加上async前缀。

通过这样做,Gulp将函数包装在承诺中,任务将正常运行。

例子:

async function() {
  // do something
};

资源:

Gulp页面的最后一节:使用Async /await。 Mozilla异步函数文档。

我得到了同样的错误试图运行一个非常简单的SASS/CSS构建。

我的解决方案(可以解决相同或类似的错误)是简单地添加done作为默认任务函数的参数,并在默认任务的末尾调用它:

// Sass configuration
var gulp = require('gulp');
var sass = require('gulp-sass');

gulp.task('sass', function () {
    gulp.src('*.scss')
        .pipe(sass())
        .pipe(gulp.dest(function (f) {
            return f.base;
        }))
});

gulp.task('clean', function() {
})

gulp.task('watch', function() {
    gulp.watch('*.scss', ['sass']);
})


gulp.task('default', function(done) { // <--- Insert `done` as a parameter here...
    gulp.series('clean','sass', 'watch')
    done(); // <--- ...and call it here.
})

希望这能有所帮助!

这个工作!

在2021年2月18日的最新更新中,我在使用下面的旧解决方案后发现了这个问题,然后我在下一个gulp版本中使用以下方法来修复它。

文件:Package.json

...,
"devDependencies": {
        "del": "^6.0.0",
        "gulp": "^4.0.2",
      },
...

文件:gulpfile.js

const {task} = require('gulp');
const del = require('del');

async function clean() {
    console.log('processing ... clean');

    return del([__dirname + '/dist']);
}

task(clean)
...

老版本

gulp.task('script', done => {
    // ... code gulp.src( ... )
    done();
});

gulp.task('css', done => {
    // ... code gulp.src( ... )
    done();
});

gulp.task('default', gulp.parallel(
        'script',
        'css'
  )
);