Gulp错误:必须指定任务函数

3

这是我第一次使用Gulp,我正在尝试创建一个gulpfile来压缩和合并cssjs文件,但是当我运行gulp命令时出现了以下错误:

C:\Users\S.Hocine\Desktop\gulpTest>gulp
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (C:\Users\S.Hocine\Desktop\gulpTest\node_modules\undertaker\lib\set-task.js:10:3)
    at Gulp.task (C:\Users\S.Hocine\Desktop\gulpTest\node_modules\undertaker\lib\task.js:13:8)
    at Object.<anonymous> (C:\Users\S.Hocine\Desktop\gulpTest\gulpfile.js:36:6)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1042:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at requireOrImport (C:\Users\S.Hocine\AppData\Roaming\npm\node_modules\gulp-cli\lib\shared\require-or-import.js:19:11) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}

我的gulpfile:

const gulp = require('gulp');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');

// minify and copy html
gulp.task('minifyHtml', function(){
    gulp.src('src/*.html')
        .pipe(uglify())
        .pipe(gulp.dest('dest'));
  });

// minify and merge css
gulp.task('minifyMergeCss', function(){
    gulp.src('src/css/*.css')
        .pipe(concat('merged-min.css'))
        .pipe(uglify())
        .pipe(gulp.dest('dest/css'));
  });

// minify and merge js
gulp.task('minifyMergeJs', function(){
  gulp.src('src/js/*.js')
      .pipe(concat('merged-min.js'))
      .pipe(uglify())
      .pipe(gulp.dest('dest/js'));
});

gulp.task('default', ['minifyHtml', 'minifyMergeCss', 'minifyMergeJs']);

gulp.task('watch', function(){
  gulp.watch('src/*.html', ['minifyHtml']);  
  gulp.watch('src/css/*.css', ['minifyMergeCss']);
  gulp.watch('src/js/*.js', ['minifyMergeJs']);
});

我的gulp版本:
CLI版本:2.3.0
本地版本:4.0.2

问题出在哪里?


将此更改为:gulp.task('default', gulp.series('minifyHtml', 'minifyMergeCss', 'minifyMergeJs')); 并且对于您的三个gulp.watch语句也是一样。例如,gulp.watch('src/*.html', gulp.series('minifyHtml')); 您使用了gulp v3语法 - 我更改为gulpv4语法。 - Mark
1个回答

7
如果您正在使用包含不同语法的 gulp V3 版本,请改用最新版本的 gulp,并且对于您正在使用的 gulp 任务模块也改为使用最新版本,如果这种方法仍然无效,则可以尝试以下方式:
An example of your function it must be,

    gulp.task('default', gulp.series('minifyHtml', 'minifyMergeCss', 'minifyMergeJs'));

现在它将正常工作。这是因为在gulp v4中,list参数已被弃用。

请参阅更健壮的示例,了解有关按系列运行任务的gulp文档

或者您可以查看npm文档。


2
能否再详细地解释一下并给一个更完整的例子?我不太明白 OP 的源码应该如何具体修改。 - DarkTrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接