TL: DR
Gulp 3.*
не працює на Node 12.*
або вище. Вам доведеться понизити Node або оновити Gulp.
Якщо вам не вистачає часу, зменшіть Node до v11. * Або нижче; якщо вам потрібні новіші функції, і ви встигнете виправити навантаження зламаних залежностей, оновіть Gulp до 4. * або вище!
Як уже згадували інші, Gulp 3.*
не підтримується у вузлі 12
або вище, тому вам доведеться зменшити версію вузла до 11.*
або нижче, або оновити ваш Gulp до 4.0
.
Оптимальний варіант в кінцевому рахунку залежить від того, скільки часу у вас є, оскільки оновлення Gulp приносить переваги більш чистим gulpfiles та вбудованому контролю над виконанням завдань послідовно або паралельно , але також покладається на те, що ви перезаписуєте свій gulpfile у новий синтаксис, і може (прочитати: напевно, буде - див. кінець цього коментаря) може викликати конфлікти з деякими залежностями.
Зниження рівня вузла
Це найпростіший і швидкий варіант. Особливо, якщо ви використовуєте n або nvm , оскільки вони дозволяють дуже швидко встановити та переключитися між версіями Node.
Встановлення версії Node на N
n 10.16.0
Версія InstallNode на NVM
nvm install 10.16.0
Коли ви це зробили, можливо , вам доведеться відновити свої npm-залежності або ж видалити обидвіnode_modules
папку, так і свій package-lock.json
файл, і перевстановити свої залежності. Хоча якщо ви просто переходите до вже існуючої версії Node, ви, мабуть, будете добре.
Оновлення Gulp
Як було сказано вище, це більш трудомістка задача, але може принести користь у довгостроковій перспективі. Наприклад, Node12
тепер представив нативну підтримку модулів 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
була залежність із використанням Gulp3.9.*
. Вимкнення цього завдання в моєму gulpfile дозволило Gulp запуститися знову.
Якщо це сталося, у вас є кілька варіантів: ви можете,
- Ідіть без плагіна, якщо це абсолютно не потрібно
- Знайдіть альтернативу,
- Виправити плагін
Потрібно сказати, що якщо у вас є кілька плагінів, які покладаються на більш стару версію Gulp - особливо якщо ці плагіни життєво важливі для вашої програми - саме тут може бути величезний додатковий фрагмент часу, витраченого на оновлення Gulp (отже, попередження вище).
Якщо це трапиться, найкраще просто знизити Node, принаймні, доки патчі не можуть бути видані.