首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp错误: gulp.hasTask不是函数

Gulp错误: gulp.hasTask不是函数
EN

Stack Overflow用户
提问于 2018-01-30 11:46:09
回答 6查看 39K关注 0票数 55

当我运行“吞咽”的时候,我得到了下面的信息。看起来我有一个CLI和本地版本的混合,不是真的确定如何解决这个问题。

代码语言:javascript
复制
cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp -v
[22:44:23] CLI version 2.0.1
[22:44:23] Local version 4.0.0
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$
cabox@box-codeanywhere:~/workspace/apps/web-ui$ gulp
[22:44:28] Using gulpfile ~/workspace/apps/web-ui/gulpfile.js
[22:44:28] Starting 'default'...
[22:44:28] 'default' errored after 5.41 ms
[22:44:28] TypeError: gulp.hasTask is not a function
    at /home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:23:22
    at Array.forEach (<anonymous>)
    at verifyTaskSets (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:17:11)
    at runSequence (/home/cabox/workspace/apps/web-ui/node_modules/run-sequence/index.js:130:2)
    at /home/cabox/workspace/apps/web-ui/gulpfile.js:187:5
    at taskWrapper (/home/cabox/workspace/apps/web-ui/node_modules/undertaker/lib/set-task.js:13:15)
    at bound (domain.js:301:14)
    at runBound (domain.js:314:12)
    at asyncRunner (/home/cabox/workspace/apps/web-ui/node_modules/async-done/index.js:55:18)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
cabox@box-codeanywhere:~/workspace/apps/web-ui$ ^C
EN

回答 6

Stack Overflow用户

发布于 2018-05-02 18:35:49

run-sequence package的v4有一些突破性的变化,这给Gulp带来了一些问题。

因为我没有你的gulpfile.js,到目前为止我能说的就是尝试使用Gulp4的gulp.seriesgulp.parallel来处理你的吞吐任务,而不是运行序列。

在任务的函数中,您可能会收到类似“task1,'task2‘may’t be completed‘之类的错误,接受已完成的回调,并在函数结束时调用任务中的回调

示例:

代码语言:javascript
复制
gulp.task('task1', gulp.series('task1-1', function (done) {
   // task 1 code here
    done();
}));

gulp.task('task2', gulp.series('task2-1', function (done) {
   // task 2 code here
    done();
}));

// Similarly Tasks 3 and 4 Code here

gulp.task('main', gulp.series('task1', 'task2', 'task3', 'task4', function (done) {
    done();
}));
票数 69
EN

Stack Overflow用户

发布于 2018-03-13 10:27:14

最重要的是本地版本。由于gulp 4.0.0引入了破坏性的更改,您可以简单地执行我所做的操作-显式地将本地包设置回工作版本:

代码语言:javascript
复制
npm install --save-dev gulp@3.9.1

最近这件事咬了我几次,我肯定我还会再来这里的。

注意: gulp 3.9.1的依赖项有许多安全漏洞。您不应该这样做。

票数 28
EN

Stack Overflow用户

发布于 2019-11-11 18:05:21

Saurabh Pati's answer就是答案。顺便说一句,一个快速的解决方法是用gulp4-run-sequence包替换run-sqeuence包。

如果您的项目在本地安装了Gulp,请删除Gulp的本地版本:

代码语言:javascript
复制
yarn remove gulp

然后打开package.json并将"run-sequence": "^0.3.6",替换为

代码语言:javascript
复制
"gulp4-run-sequence": "^1.0.0",

现在运行

代码语言:javascript
复制
yarn install

Gulpfile.js中,将runSequence = require('run-sequence'),替换为

代码语言:javascript
复制
runSequence = require('gulp4-run-sequence'),

然后,你就完成了。:)

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48513573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档