TL: DR
Gulp 3.*
nie działa na węźle 12.*
lub nowszym. Musisz obniżyć poziom Węzła lub uaktualnić Gulp.
Jeśli brakuje Ci czasu, obniż węzeł do wersji 11. * Lub niższej; jeśli potrzebujesz nowszych funkcji i masz czas, aby naprawić wiele zepsutych zależności, zaktualizuj Gulp do 4. * lub nowszej!
Jak już wspomniano inni, Gulp 3.*
nie jest obsługiwany w Węzle 12
lub nowszym, więc będziesz musiał obniżyć wersję swojego Węzła do 11.*
lub poniżej, LUB uaktualnić Gulp do 4.0
.
Najlepsza opcja zależy ostatecznie od tego, ile masz czasu, ponieważ aktualizacja Gulp zapewnia korzyści z czystszych plików gulp i wbudowanej kontroli nad uruchamianiem zadań szeregowo lub równolegle , ale także zależy od tego, czy przepiszesz plik gulp do nowej składni, i może (czytaj: prawdopodobnie będzie - patrz koniec tego komentarza) powodować konflikty z niektórymi zależnościami.
Obniżenie węzła
To najłatwiejsza i najszybsza opcja. Zwłaszcza jeśli używasz n lub nvm , ponieważ pozwalają one na bardzo szybką instalację i przełączanie między wersjami węzłów.
Instalowanie wersji węzła na N
n 10.16.0
Wersja InstallingNode na NVM
nvm install 10.16.0
Po wykonaniu tej czynności może być konieczne odbudowanie zależności npm lub usunięcie zarówno node_modules
folderu ORAZ package-lock.json
pliku, jak i ponowne zainstalowanie zależności. Chociaż po prostu powracasz do wcześniej istniejącej wersji Węzła, prawdopodobnie powinno być w porządku.
Ulepszenie Gulp
Jak wspomniano powyżej, jest to zadanie bardziej czasochłonne, ale na dłuższą metę może przynieść korzyści. Na przykład Node 12
wprowadził teraz natywną obsługę modułów ES (za flagą eksperymentalną) i pełną obsługę Node 13
.
Aby go użyć, może być konieczne uaktualnienie Węzła, co zmusi Cię do uaktualnienia Gulpa. Lub możesz po prostu skorzystać z zalet korzystania z Gulp 4, ponieważ oferuje on lepszą i bardziej wydajną kontrolę nad zadaniami pisania.
Jest już wiele artykułów na ten temat, więc nie będę dalej omawiać szczegółów, ale powtarzam - to nie jest szybka praca . W zależności od wielkości projektu może być wymagane znaczące ponowne napisanie i mogą wystąpić zależności, które się psują. Jeśli brakuje Ci czasu, powinieneś po prostu obniżyć węzeł, przynajmniej tymczasowo.
Ale mam już Gulp 4 i nadal nie działa!
Jeśli, podobnie jak ja, używasz już Gulp 4+ (użyłem Gulp 4.0.2
, pierwotnie na węźle 10) i niedawno zaktualizowałeś (zaktualizowałem do Node 13.8.0
), czy nadal występuje problem, być może dlatego, że zależność zależy od starsza wersja Gulp, która zostaje złapana w potok.
W moim przypadku gulp-combine-mq
była zależność przy użyciu Gulp 3.9.*
. Wyłączenie tego zadania w moim pliku gulp pozwoliło Gulpowi na ponowne uruchomienie.
Jeśli tak się stanie, masz kilka opcji: możesz,
- Przejdź bez wtyczki, jeśli nie jest to absolutnie konieczne
- Znajdź alternatywę,
- Napraw wtyczkę
Nie trzeba dodawać, że jeśli masz kilka wtyczek opartych na starszej wersji Gulpa - szczególnie jeśli te wtyczki są niezbędne dla Twojej aplikacji - w tym miejscu może być ogromna dodatkowa część czasu poświęcana na aktualizację Gulpa (stąd powyższe ostrzeżenia).
Jeśli tak się stanie, najlepiej obniżyć węzeł, przynajmniej do czasu wydania łatek.