web-dev-qa-db-fra.com

Erreur Gulp: gulp.hasTask n'est pas une fonction

Je reçois ce qui suit quand je cours "gulp". On dirait que j'ai un mélange de version CLI et locale, je ne sais pas trop comment résoudre ce problème. 

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
16
user1187968

gulp v4 a des changements radicaux et cela crée des problèmes avec le paquet run-sequence. 

Comme je n'ai pas votre fichier gulpfile.js, tout ce que je peux dire jusqu'à présent est d'essayer d'utiliser essayer d'utiliser gulp.series et gulp.parallel avec vos tâches gulp au lieu de run-sequence

vous pouvez recevoir une erreur de type "tâche1," tâche2 'impossible à terminer ", dans la fonction de la tâche, acceptez le rappel effectué et appelez le rappel dans vos tâches à la fin de la fonction

Exemple:

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

18
Saurabh Pati

Tout ce qui compte est la version locale. Depuis que gulp 4.0.0 a introduit des changements radicaux, vous pouvez simplement faire ce que j'ai fait --- définir explicitement le paquet local sur une version opérationnelle:

npm install --save-dev [email protected]

Cela m’a mordu à deux reprises récemment et je reviendrai ici, j'en suis sûr.

Remarque: Les dépendances de gulp 3.9.1 comportent de nombreuses vulnérabilités de sécurité. Tu ne devrais pas faire ça.

13
dvdrtrgn

J'ai eu le même problème et ne pouvais pas installer la version 3.9.1 de gulp. Après l'installation, était de toute façon 4.0.0. L'installation de la même version pour -g et --save dev - résout les problèmes liés à hasTask et donne la version 3.9.1 pour CLI et locale. Ne corrigez pas les vulnérabilités. Il transforme gulp local en 4.0.0. Il suffit donc d’installer npm i gulp @3.9.1 -g et npm i gulp @3.9.1 --save-dev

0
Ivan Doroshenko