Ошибка 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
жалуется.