TL: DR
Gulp 3.*
не работает на узле 12.*
или выше. Вы должны понизить Node или обновить Gulp.
Если у вас мало времени, понизьте Node до версии v11. * Или ниже; если вам нужны более новые функции, и у вас есть время, чтобы по возможности исправить загрузку сломанных зависимостей, обновите Gulp до версии 4. * или выше!
Как уже упоминали другие, Gulp 3.*
не поддерживается на Node 12
или выше, поэтому вам придется понизить версию своего Node до 11.*
или ниже, ИЛИ обновить Gulp до 4.0
.
В конечном счете, лучший вариант зависит от того, сколько у вас есть времени, поскольку обновление Gulp дает преимущества более чистых файлов gulp и встроенного контроля над выполнением задач, выполняемых последовательно или параллельно , но также полагается на то, что вы переписываете свой gulpfile в новый синтаксис, и может (читай: вероятно будет - см. конец этого комментария) может вызвать конфликты с некоторыми зависимостями.
Понижение Узла
Это самый простой и быстрый вариант. Особенно, если вы используете n или nvm , поскольку они позволяют очень быстро установить и переключаться между версиями Node.
Установка версии Node на N
n 10.16.0
Установка версии узла на NVM
nvm install 10.16.0
После того, как вы это сделали, вам может понадобиться перестроить ваши зависимости npm или, в качестве альтернативы, удалить и вашу node_modules
папку, и ваш package-lock.json
файл, и переустановить ваши зависимости. Хотя, если вы просто возвращаетесь к уже существующей версии Node, у вас, вероятно, все будет хорошо.
Обновление Gulp
Как упоминалось выше, это более трудоемкая задача, но она может принести выгоды в долгосрочной перспективе. Например, Node 12
теперь представил встроенную поддержку модулей ES (за экспериментальным флагом) и полную поддержку в Node 13
.
Возможно, вам придется обновить Node, чтобы использовать это, заставляя вас обновить Gulp. Или вы можете просто захотеть воспользоваться преимуществами Gulp 4, так как он предлагает лучший и более эффективный контроль над задачами написания.
Об этом уже есть ряд статей, поэтому я не буду более подробно останавливаться на деталях, но повторюсь - это не простая работа . В зависимости от размера вашего проекта, может потребоваться заметное переписывание, и у вас могут быть зависимости, которые нарушаются. Если у вас не хватает времени, вы должны просто понизить рейтинг узла, хотя бы временно.
Но у меня уже есть Gulp 4, и он все еще не работает!
Если, как и я, вы уже используете Gulp 4+ (я использовал Gulp 4.0.2
, изначально на Node 10) и недавно обновили (я обновился до Node 13.8.0
), если вы все еще получаете проблему, это может быть потому, что зависимость зависит от старая версия Gulp, и это попадает в конвейер.
В моем случае gulp-combine-mq
была зависимость с использованием Gulp 3.9.*
. Отключение этой задачи в моем gulpfile позволило Gulp запустить снова.
Если это произойдет, у вас есть несколько вариантов: вы можете,
- Обойтись без плагина, если это не является абсолютно необходимым
- Найти альтернативу,
- Исправить плагин
Само собой разумеется, если у вас есть несколько плагинов, которые используют более старую версию Gulp - особенно, если эти плагины жизненно важны для вашего приложения - это то, где может быть огромный дополнительный промежуток времени, потраченный на обновление Gulp (отсюда и предупреждения выше).
Если это произойдет, лучше всего понизить Node, по крайней мере, до тех пор, пока не будут выпущены патчи.