57 votes

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
 

75voto

Saurabh Pati Points 96

gulp v4 a la rupture de changements et qui crée des problèmes avec l'exécution de la séquence de paquet.

Comme je n'ai pas votre gulpfile.js tout ce que je peux dire jusqu'à ce point est d'essayer d'utiliser essayez d'utiliser gulp.série et gulp.en parallèle avec votre gulp des tâches au lieu de l'exécution de la séquence

vous pouvez recevoir une erreur de la sorte de 'task1, 'task2' n'a pas pu être réalisés, en fonction de la tâche, accepter le fait de rappel et d'appeler la fonction de 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();
}));

28voto

dvdrtrgn Points 646

Tout ce qui compte, c'est la version locale. Depuis que gulp 4.0.0 a introduit des modifications de dernière minute, vous pouvez simplement faire ce que j'ai fait --- redéfinir explicitement le paquet local sur une version opérationnelle:

 npm install --save-dev gulp@3.9.1
 

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.

0voto

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

0voto

J'ai eu cette même erreur .. De mes recherches, j'ai découvert est due à gulp version 4.0. Par conséquent, si vous avez gulp4.0 et supérieur, cette solution vous convient. Installez une version ultérieure telle que npm install --save-dev gulp@3.9.1, puis j’ai supprimé mon dossier node_modules et relancé l’installation à partir de la ligne de commande. .et tout fonctionne parfaitement maintenant .. grâce à @tptompkins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X