Gulp错误:gulp.hasTask不是函数

问题描述 投票:27回答:4

运行“ gulp”时,我得到以下提示。看起来我混合使用了CLI和Local版本,但不确定如何解决此问题。

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
npm gulp
4个回答
31
投票

gulp v4具有重大更改,这给运行顺序包带来了一些问题。

由于我没有您的gulpfile.js,到目前为止,我只能说尝试将gulp.series和gulp.parallel与您的gulp任务一起使用,而不是运行顺序

您可能会在任务的函数中收到类似'task1,'task2'无法完成的错误,请接受完成的回调并在函数末尾调用任务中的回调

示例:

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();
}));

21
投票

重要的是本地版本。由于gulp 4.0.0引入了重大更改,因此您只需执行我的操作---将本地包显式设置回工作版本:

npm install --save-dev [email protected]

这最近让我有点难受,我确定我会再次回到这里。

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


0
投票

我遇到了同样的问题,无法安装gulp 3.9.1版本。安装后,是4.0.0。为-g和--save dev安装相同的版本-解决了hasTask的问题,并为CLI和本地提供了3.9.1版本。不要修复漏洞。它将gulp本地设置为4.0.0。因此,只需安装npm i gulp @3.9.1 -gnpm i gulp @3.9.1 --save-dev


0
投票

我也有同样的错误。从我的研究中发现,这是由于gulp 4.0版造成的。因此,如果您具有gulp4.0及以上版本,则此解决方案适合您。.安装更高的版本,例如npm install --save-dev [email protected],然后我删除了node_modules文件夹并运行从命令提示符再次安装npm。.并且现在一切正常,..感谢@tptompkins。

© www.soinside.com 2019 - 2024. All rights reserved.