在 vs 代码中打开项目时未检测到 Gulp 任务

Posted

技术标签:

【中文标题】在 vs 代码中打开项目时未检测到 Gulp 任务【英文标题】:Gulp task not being detected when open the project in vs code 【发布时间】:2020-03-01 16:56:27 【问题描述】:

我使用 gulp 任务来缩小 css 和 js 文件,但每次打开 gulp 时都会出现此错误。我搜索了任何解决方案,但仍然没有找出问题所在。

Gulp 任务:命令失败:gulp --tasks-simple --cwd "c:\wamp64\www\gulp_p" --gulpfile "c:\wamp64\www\gulp_p\gulpfile.js" assert.js:374 抛出错误; ^ AssertionError [ERR_ASSERTION]:任务 必须指定函数 在 Gulp.set [as _setTask] (c:\wamp64\www\gulp_p\node_modules\undertaker\lib\set-task.js:10:3) 在 Gulp.task (c:\wamp64\www\gulp_p\node_modules\undertaker\lib\task.js:13:8) 在对象。 (c:\wamp64\www\gulp_p\gulpfile.js:64:6) 在 Module._compile (internal/modules/cjs/loader.js:956:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10) 在 Module.load (internal/modules/cjs/loader.js:812:32) 在 Function.Module._load (internal/modules/cjs/loader.js:724:14) 在 Module.require (internal/modules/cjs/loader.js:849:19) 在需要(内部/模块/cjs/helpers.js:74:18) 在执行时(C:\Users\alia\AppData\Roaming\npm\node_modules\gulp-cli\lib\versioned\^4.0.0\index.js:36:18) 生成消息:假, 代码:'ERR_ASSERTION', 实际:错误, 预期:真实, 运算符:'=='

我的安装

gulp --version => CLI version: 2.2.0  -  Local version: 4.0.2
node --version => v12.13.0
npm --version => 6.12.0
npx --version => 6.12.0

package.json


  "name": "gulp_p",
  "version": "1.0.0",
  "main": "gulpfile.js",
  "dependencies": 
    "gulp": "^4.0.2",
    "gulp-clean": "^0.4.0",
    "gulp-clean-css": "^3.10.0",
    "gulp-concat": "^2.6.1",
    "gulp-concat-css": "^3.1.0",
    "gulp-inject": "^4.3.2",
    "gulp-install": "^1.1.0",
    "gulp-minify": "^3.1.0",
    "gulp-minify-css": "^1.2.4",
    "gulp-prompt": "^1.1.0",
    "gulp-requirejs": "^1.2.0",
    "gulp-watch": "^5.0.1"
  ,
  "devDependencies": ,
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1"
  ,
  "author": "",
  "license": "ISC",
  "description": ""

gulpfiles.js 正在工作,因为我在不同的计算机上使用它。所以 gulpfile.js 没有错误,它位于项目的根目录

'use strict';

var gulp = require('gulp');

var prompt = require('gulp-prompt');
var log = require('fancy-log');
var concatCss = require('gulp-concat-css');
var minifyCSS = require('gulp-minify-css');
var cleanCSS = require('gulp-clean-css');

var concat = require('gulp-concat');
var minify = require('gulp-minify');
var clean = require('gulp-clean');

var watch = require('gulp-watch');

var theme_input='sunstar';

gulp.task('css', function() 
    var importFrom = require('gulp/themes/'+theme_input+'.js');
    return gulp.src(importFrom.css_arr,base: '.')
      .pipe(concatCss(importFrom.destination_css))
      .pipe(minifyCSS(keepSpecialComments: 0))
      .pipe(gulp.dest('.'));
  );

gulp.task('scripts', function() 
    var importFrom = require('gulp/themes/'+theme_input+'.js');
    return gulp.src(importFrom.js_arr)
      .pipe(concat(importFrom.destination_js))
      .pipe(minify(keepSpecialComments: 0))
      .pipe(gulp.dest('.'));
  );


gulp.task('choose', function()
    log('Please enter THEME name, then type of task [js/css].');
    return gulp.src('*')
    .pipe(prompt.prompt([
        type: 'input',
        name: 'theme_input',
        message: 'Please enter THEME name?'
    ,
        type: 'input',
        name: 'task',
        message: 'Please enter task Type?'
    ], function(res)
        theme_input = res.theme_input;
        var importFrom = require('gulp/themes/'+theme_input+'.js');
        if(res.task == 'css')
            gulp.src(importFrom.css_arr,base: '.')
            .pipe(concatCss(importFrom.destination_css))
            .pipe(minifyCSS(keepSpecialComments: 0))
            .pipe(gulp.dest('.'));
        else if(res.task == 'js')
            gulp.src(importFrom.js_arr)
            .pipe(concat(importFrom.destination_js))
            .pipe(minify(keepSpecialComments: 0))
            .pipe(gulp.dest('.'));
        
    ));
);

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

【问题讨论】:

尽管如此,因为这是一个常见的 gulpfile.js 错误,如果您需要帮助,您应该包含您的 gulpfile。 @Mark 当然,因为我仍然坚持这个错误 【参考方案1】:

由于您使用的是 gulp v4,因此此代码将不起作用:

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

将其更改为:

gulp.task('default',gulp.series('choose','css','scripts'));

运行此功能的另一台计算机必须使用 gulp v3。

【讨论】:

以上是关于在 vs 代码中打开项目时未检测到 Gulp 任务的主要内容,如果未能解决你的问题,请参考以下文章

gulp VS grunt

Gulp 4:如何检测复杂构建脚本中的“您是否忘记发出异步完成信号?”错误

我怎样才能改变我的gulp文件,以便在代码库发生变化时运行构建任务?

从通道读取时未检测到“死锁”

Gulp压缩jscssimghtml提高页面打开速度

在Visual Studio 2015中启动IIS Express会话后,如何运行gulp任务