【问题标题】:Gulp Error Task '+name+' requires a function that is a functionGulp 错误任务 '+name+' 需要一个作为函数的函数
【发布时间】:2018-02-17 13:07:32
【问题描述】:

之前在这里问过一个类似的问题:

Error: Task requires a name at Gulp.Orchestrator.add

在我的例子中,我设置了一个 gulp 构建。

已安装

gulp-connect
gulp-postcss
gulp-sourcemaps

当我运行gulp 我得到

错误

    C:\Users\jwilson\Documents\James\jameswilson.co.za\node_modules\orchestrator\index.js:44
                            throw new Error('Task '+name+' requires a function that is a function');
                            ^

Error: Task default requires a function that is a function
    at Gulp.Orchestrator.add (C:\Users\jwilson\Documents\James\jameswilson.co.za\node_modules\orchestrator\index.js:44:10)
    at Object.<anonymous> (C:\Users\jwilson\Documents\James\jameswilson.co.za\gulpfile.js:19:6)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Liftoff.handleArguments (C:\Users\jwilson\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:116:3)

Gulpfile

var gulp = require('gulp'),
  connect = require('gulp-connect');
  postcss = require('gulp-postcss');
  sourcemaps = require('gulp-sourcemaps');

gulp.task('connect', function() {
  connect.server();
});

gulp.task('css', function () {

  return gulp.src('src/**/*.css')
      .pipe( sourcemaps.init() )
      .pipe( postcss([ require('precss'), require('autoprefixer') ]) )
      .pipe( sourcemaps.write('.') )
      .pipe( gulp.dest('build/') );
});

gulp.task('default', ['css'], ['connect']);

【问题讨论】:

    标签: gulp postcss gulp-sourcemaps


    【解决方案1】:

    我认为错误在这里:

    gulp.task('default', ['css'], ['connect']);
    

    在我看来,您使用的是 gulp v3.9.1 或更早版本。在这种情况下,gulp.task 最多需要三个参数:任务名称、相关任务名称数组和函数。您正在传递一个任务名称和两个 1 元素数组。 Gulp 抱怨是因为它希望 task 的第三个参数是一个函数,但您将数组 ['connect'] 传递给它。

    我想你想用一个 2 元素数组替换两个 1 元素数组:

    gulp.task('default', ['css', 'connect']);
    

    对于 gulp v4 或更高版本,您可以使用以下命令运行 series 中的两个任务:

    gulp.task('default', gulp.series('css', 'connect'));
    

    或者在parallel,使用:

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

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2021-07-29
      相关资源
      最近更新 更多