Ошибка Gulp: gulp.hasTask не является функцией

Я получаю следующее, когда я запускаю "gulp". Похоже, у меня смешанная CLI и локальная версия, не совсем уверен, как решить эту проблему.

[email protected]:~/workspace/apps/web-ui$ gulp -v
[22:44:23] CLI version 2.0.1
[22:44:23] Local version 4.0.0
[email protected]:~/workspace/apps/web-ui$
[email protected]:~/workspace/apps/web-ui$
[email protected]:~/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)
[email protected]:~/workspace/apps/web-ui$ ^C

Ответы

Ответ 1

gulp v4 имеет нарушения, и это создает некоторые проблемы с пакетом последовательности выполнения.

Поскольку у меня нет вашего gulpfile.js, все, что я могу сказать до этого, - попытаться использовать try для использования gulp.series и gulp.параллельно с вашими задачами 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();
}));

Ответ 2

Все, что имеет значение, это локальная версия. Поскольку в gulp 4.0.0 были внесены критические изменения, вы можете просто сделать то, что я сделал - явно вернуть локальный пакет к рабочей версии:

npm install --save-dev [email protected]

Это недавно меня укусило пару раз, и я вернусь сюда снова, я уверен.

Примечание. В зависимостях gulp 3.9.1 есть много уязвимостей безопасности. Вы не должны этого делать.

Ответ 3

У меня такая же проблема, и я не смог установить версию gulp 3.9.1. После инсталляции, был каким-то образом 4.0.0. Установка той же версии для -g и --save dev - решает проблемы с hasTask и дает версию 3.9.1 для CLI и локальной. Не устраняйте уязвимости. Он превращает gulp local в 4.0.0. Так что просто установите npm я gulp @3.9.1 -g и npm я gulp @3.9.1 --save-dev

Ответ 4

У меня была та же самая ошибка.. Из моего исследования, которое я обнаружил, происходит из-за глотка версии 4.0. Поэтому, если у вас gulp4.0 и выше, это решение для вас.. Установите более позднюю версию, например npm install --save-dev [email protected], затем я удалил папку node_modules и запустил npm установить снова из командной строки... и теперь все работает отлично... спасибо @tptompkins.

Ответ 5

Как уже отмечалось ранее, в gulp 4.0.0 наблюдается резкое изменение. Возвращение к gulp 3.9.1 должно решить проблему. Просто убедитесь, что у вас CLI и локальные версии идентичны. Вы можете проверить версии, выполнив:

gulp -v

В моем случае проблема усугублялась попыткой установить другой пакет, а именно semantic-ui, который зависит от gulp.hasTask функции до понижения gulp.

semantic-ui пакет получил несколько крючков в npm, поэтому каждый раз, когда я пытался принизить gulp через npm install [email protected] --save, крюки ноги в, но они потерпели неудачу из - за некоторые другие недостающие пакеты. В результате gulp понижение было прервано, и я в конечном итоге со сломанной версией снова.

Я заработал, запустив все зависимые пакеты в соответствии с gulp версии:

npm install [email protected] sparkles duplexify ansi-colors path-dirname semantic-ui --save

Возможно, вам придется добавить дополнительные пакеты в последовательность, если npm жалуется.