我有以下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

当前回答

我最近一直在努力解决这个问题,并找到了正确的方法来创建一个默认任务,运行sass然后sass:watch是:

gulp.task('default', gulp.series('sass', 'sass:watch'));

其他回答

我知道这个问题在6年前就出现了,但可能你在函数中错过了返回。 我今天早上用eslint修复了这个问题,在我的工作目录中运行“gulp lint”后,它给了我同样的消息。

例子:

function runLinter(callback)
{
  return src(['**/*.js', '!node_modules/**'])
    .pipe(eslint())
    .on('end', ()=>
    {
        callback();
    });
}

exports.lint = runLinter;

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

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

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

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

例子:

async function() {
  // do something
};

资源:

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

解决方案:我们需要调用回调函数(任务和匿名):

function electronTask(callbackA)
{
    return gulp.series(myFirstTask, mySeccondTask, (callbackB) =>
    {
        callbackA();
        callbackB();
    })();    
}

Gulp 4的一个问题。

为了解决这个问题,尝试改变您当前的代码:

gulp.task('simpleTaskName', function() {
  // code...
});

举个例子:

gulp.task('simpleTaskName', async function() {
  // code...
});

或者变成这样:

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

我得到了同样的错误试图运行一个非常简单的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.
})

希望这能有所帮助!