Zainstalowałem moduły węzłów przez npm install, a następnie próbowałem zrobić gulp sass-watch w wierszu polecenia. Potem otrzymałem poniższą odpowiedź.
[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
^
ReferenceError: primordials is not defined
Próbowałem tego przed łykiem sass-watch
npm -g install gulp-cli
webshot
pakietu węzła. Podejrzewam, że muszą coś zaktualizować, zanim będę mógł kontynuować pracę z Node v12.v12.1.0
i łyka,[email protected]
ale to nie działav10.x
i łykiemv3.x
, a potem magia się wydarzyłaTen sam problem wystąpił podczas aktualizacji starszego projektu w zależności od wersji
[email protected]
Node.js 12.Te poprawki umożliwiają używanie Node.js 12
[email protected]
przez zastąpieniegraceful-fs
wersji4.2.3
.Jeśli Twój projekt nie jest aktywnie rozwijany i używasz npm
Utwórz
npm-shrinkwrap.json
plik zawierający to:Zatwierdź ten
npm-shrinkwrap.json
plik. A następnie uruchom,npm install
który zaktualizujenpm-shrinkwrap.json
plik.Niestety, to rozwiązanie nie działa, jeśli
npm install
znowu. Zobacz inne rozwiązania poniżej.Jeśli Twój projekt jest w fazie rozwoju i używasz przędzy v1
Yarn v1 obsługuje rozwiązywanie pakietu do zdefiniowanej wersji . Musisz dodać
resolutions
sekcję dopackage.json
:Dzięki @jazd za ten sposób rozwiązania problemu.
Jeśli Twój projekt jest w fazie rozwoju i używasz npm
Używając
npm-force-resolutions
jako skryptu preinstalacji, możesz uzyskać podobny wynik jak w przypadku przędzy v1. Musisz zmodyfikować plik package.json w ten sposób:npm-force-resolutions
zmienipackage-lock.json
plik, aby ustawićgraceful-fs
żądaną wersję przed zakończenieminstall
.Jeśli używasz niestandardowego
.npmrc
pliku w swoim projekcie i zawiera on serwer proxy lub niestandardowy rejestr, musisz zmienićnpx npm-force-resolutions
na,npx --userconfig .npmrc npm-force-resolutions
ponieważ na razie domyślnienpx
nie używa bieżącego.npmrc
pliku folderu .Geneza problemu
Ten problem wynika z faktu, który
[email protected]
zależy od tego,graceful-fs@^3.0.0
któryfs
moduł monkeypatches Node.js.To działało z Node.js do wersji 11.15 (która jest wersją z gałęzi programistycznej i nie powinna być używana w produkcji).
graceful-fs@^4.0.0
nie monkeypatchfs
modułu Node.js , co czyni go kompatybilnym z Node.js> 11.15.Pamiętaj, że nie jest to trwałe rozwiązanie, ale pomaga, gdy nie masz czasu na aktualizację
gulp@^4.0.0
.źródło
npm install
aby zregenerowaćpackage-lock.json
lubnpm-shrinkwrap.json
, wydaje się, że nie udało się zablokować tych zależności. Po ponownym uruchomieniunpm install --no-save
wygenerowanepackage-lock.json
nadal wskazują npm, aby zainstalować brakujące zależności.Użyj następujących poleceń i zainstaluj węzeł v11.15.0 :
Rozwiąże
Na podstawie odpowiedzi @Terje Norderhaug @Tom Corelis.
źródło
Napraw to w 1 minutę:
Wystarczy wykonać następujące kroki . Jestem na Windowsie 10 i działało to dla mnie idealnie!
package.json
utworzononpm-shrinkwrap.json
plik o następującej treści:Uruchom
npm install
i nie martw się, zaktualizuje sięnpm-shrinkwrap.json
z dużą ilością treści.Uruchom,
gulp
aby rozpocząć projekt.źródło
Użyj następujących poleceń, aby zainstalować
node v11.15.0
igulp v3.9.1
:Rozwiązuje ten problem:
źródło
Używając NVM do zarządzania używaną wersją węzła, uruchomiłem następujące polecenia:
źródło
10
zamiast nazwy kodowej.Gulp 3.9.1 nie działa z Node v12.xx, a jeśli uaktualnisz do Gulp 4.0.2, musisz całkowicie zmienić gulpfile.js z nową składnią (Series & Parallels). Więc najlepszym rozwiązaniem jest przejście na Node V 11.xx, wersja 11.15.0 działała dla mnie dobrze. Wystarczy użyć następującego kodu w terminalu:
Twoje zdrowie!
źródło
miałem ten sam błąd i ostatecznie ustalić, że po aktualizacji wszystkie pakiety, a potem wspomniał o tej samej wersji silnika węzeł oraz wersję npm w
package.json
jak to jest w moim lokalnym układzie roboczym.Otrzymałem ten błąd podczas wdrażania na Heroku.
aby uzyskać więcej informacji na temat wsparcia heroku
źródło
Zmiana na stabilny węzeł naprawiła dla mnie ten problem, ponieważ pojawił się po aktualizacji do węzła 12
sudo n 10.16.0
źródło
n
najpierw: „npm install -g n”TL: DR
Gulp
3.*
nie działa na węźle12.*
lub nowszym. Musisz obniżyć poziom Węzła lub uaktualnić Gulp.Jak już wspomniano inni, Gulp
3.*
nie jest obsługiwany w Węzle12
lub nowszym, więc będziesz musiał obniżyć wersję swojego Węzła do11.*
lub poniżej, LUB uaktualnić Gulp do4.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
Wersja InstallingNode na NVM
Po wykonaniu tej czynności może być konieczne odbudowanie zależności npm lub usunięcie zarówno
node_modules
folderu ORAZpackage-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ę Node13
.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 doNode 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 Gulp3.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,
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.
źródło
Ten błąd jest spowodowany nową wersją Node (12) i starą wersją gulp (mniej niż 4).
Obniżenie węzła i innych zależności nie jest zalecane. Rozwiązałem to, aktualizując
package.json
pobieranie pliku najnowszej wersji wszystkich zależności. Do tego używamnpm-check-updates
. Jest to moduł, który aktualizujepackage.json
najnowszą wersję wszystkich zależności.Odniesienie : https://www.npmjs.com/package/npm-check-updates
W większości przypadków będziemy musieli zaktualizować
gulpfile.js
również następujące elementy:Odniesienie : https://fettblog.eu/gulp-4-parallel-and-series/#migration
Przed:
Po:
źródło
Ten błąd pojawiał się w systemie Windows 10. Okazało się, że jest to uszkodzony profil mobilny.
Usunięcie
C:\Users\{user}\AppData\Roaming\npm
folderu rozwiązało mój problem.źródło
Wystarczy wykonać następujące kroki. Działa idealnie z instalacją npm uruchomioną wiele razy lub instalując inne moduły, a nawet publikując projekt w artifactory.
W tym samym katalogu, w którym znajduje się pakiet.json, utwórz plik npm-shrinkwrap.json o następującej zawartości:
Uruchom instalację npm i nie martw się, zaktualizuje ona npm-shrinkwrap.json o wiele treści. Pozbądźmy się tych aktualizacji, aktualizując opcje skryptów package.json .
Teraz możesz uruchomić npm install, a plik npm-shrinkwrap.json pozostanie nienaruszony i będzie działał wiecznie.
źródło
Mogło to nastąpić późno, ale dla każdego, kto nadal chce zachować swój Węzeł v12 podczas korzystania z najnowszego gulp ^ 4.0, wykonaj następujące kroki:
Zaktualizuj interfejs wiersza polecenia (tylko dla zachowania ostrożności), używając:
Dodaj / zaktualizuj
gulp
sekcję zależności poniżej pliku package.jsonUsuń swój
package-lock.json
plikUsuń swój
node_modules
folderNa koniec uruchom,
npm i
aby zaktualizować i ponownie utworzyć nowy folder node_modules i plik package-lock.json z poprawnymi parametrami dla Gulp ^ 4.0Uwaga Gulp.js 4.0 wprowadza metody
series()
iparallel()
do łączenia zadań zamiast metod tablicowych używanych w Gulp 3, więc możesz napotkać błąd w starymgulpfile.js
skrypcie.Aby dowiedzieć się więcej o stosowaniu tych nowych funkcji, ta strona naprawdę to zrobiła: https://www.sitepoint.com/how-to-migrate-to-gulp-4/
( Jeśli to pomoże, proszę rzucić okiem )
źródło
gulp-cli
za? Śledziłem twoje kroki i na początku wszystko działało; ale potem odinstalowałemgulp-cli
(ponieważ nie widziałem, gdzie był używany) i wszystko nadal działało. Dziękuję za odpowiedź, ponieważ znów jestem gotowy do pracy z nodev12.9.1
i Gulp4.0.2
!gulp-cli
jest narzędziem wiersza poleceń. Zapewnia to prawidłową instalację gulp Jak widać w krokach instalacji gulp tutaj: gulpjs.com/docs/en/getting-started/quick-startRozwiązałem ten problem w systemie Windows 10, odinstalowując węzeł z Dodaj lub usuń programy -> Node.js
Następnie zainstalowałem wersję 11.15.0 z https://nodejs.org/download/release/v11.15.0/
Wybierz node-v11.15.0-x64.msi, jeśli używasz Windowsa 64-bitowego.
źródło
Gulp ma problem z Nodejsem w wersji 11 i wyższej. Odinstaluj bieżącą wersję węzła i zainstaluj ponownie wersję 10.15.1. Oto link do tej wersji. Pomaga mi to również rozwiązać Twój problem.
https://nodejs.org/download/release/v10.15.1/
źródło
Napotkałem ten sam problem. Co próbowałem i pracowałem dla mnie:
Sprawdź wersję NODE i GULP (kombinacja węzła v12 i łyka mniejszych niż v4 nie działa)
Obniżam wersję NPM przez:
Działało dobrze, a następnie postępuj zgodnie z instrukcjami konsoli.
źródło
Uaktualnij do 4.0.1 i migruj https://fettblog.eu/gulp-4-parallel-and-series/#migration
źródło
Dla tych, którzy używają
yarn
.źródło
Dla każdego, kto ma ten sam błąd z tego samego powodu w ADOS CI Build:
To pytanie było pierwszym, które znalazłem, kiedy szukałem pomocy. Mam potok kompilacji ADOS CI, w którym pierwsze zadanie instalatora narzędzia Node.js służy do zainstalowania Node. Następnie do zainstalowania gulp służy zadanie npm (npm install -g gulp). Następnie następujące zadanie Gulp uruchamia domyślne zadanie z gulpfile.js. Jest w tym coś z łyka.
Kiedy zmieniłem narzędzie Node.js, aby zainstalować najnowszy węzeł 12.x zamiast starszego, a najnowszą wersją gulp była 4.0.2. Wynik był taki sam błąd, jak opisano w pytaniu.
W tym przypadku działało dla mnie obniżenie wersji node.js do najnowszej wersji 11.x, jak już zasugerowali Alphonse R. Dsouza i Aymen Yaseen. W tym przypadku jednak nie trzeba używać sugerowanych poleceń, a jedynie ustawić specyfikację wersji instalatora narzędzia Node.js na najnowszą wersję węzła od 11.x.
Dokładna wersja Node.js, która została zainstalowana i działa, to 11.15.0. Nie musiałem obniżać poziomu Gulpa.
źródło
Wystąpił ten błąd po aktualizacji mojego węzła do wersji 12, która nie działa z Gulp 3.9.1. Jeśli chodzi o fakt, że mój plik gulpfile.js nie był tak skomplikowany, postanowiłem uaktualnić go do wersji Gulp 4, korzystając z tego artykułu. Poszło dobrze i jest o wiele łatwiejsze, niż myślałem.
źródło
Masz tutaj dwie opcje
źródło
Wynika to z faktu, że występuje problem ze zgodnością między systemem
node
a jegogulp
systemem. Obniżenienode
lub uaktualnieniegulp
rozwiąże ten problem.Spróbuj usunąć
node_modules
folder ipackage-lock.json
plik i zainstaluj ponownie, używającnpm i
polecenia, jeśli nadal nie działa.źródło
Dla mnie zadziałało użycie Python2 podczas instalacji npm.
źródło
Ponieważ ten błąd również pojawia się, gdy korzystamy z pakietu s3 NPM. Problem polega na tym, że pakiet graceful-fs musi zostać zaktualizowany. Działa dobrze w 4.2.3.
Więc po prostu zobacz, jaki pakiet NPM pokazuje w dziennikach śledzenia i zaktualizuj graceful-fs zgodnie z 4.2.3.
źródło
Otrzymałem również błąd na Node 12/13 z Gulp 3, przejście do Node 11 działało.
źródło
Rozwiązany przez obniżenie wersji Node.js z
12.14.0
do10.18.0
i ponowną instalacjęnode_modules
.źródło
Jeśli próbujesz zainstalować
semantic-ui
i wystąpi następujący błąd, spróbuj pobrać najnowszą wersję węzłajs(13.5.0)
z najnowszymi funkcjami, z Node.js.org. Ponadto zamiast próbować instalacji semantycznej NPM powinieneś po prostu dodać link (który możesz znaleźć z linku cdnjs do nagłówkaindex.html
pliku. Powodzenia!źródło
Kroki w celu rozwiązania problemu: -
Rozwiązałem problem z następującymi krokami: -
Teraz możesz wdrożyć przełknięcie
źródło
Sugeruję, aby najpierw upewnić się, że instalacja NPM nie stanowi problemu. Następnie obniżysz wersje węzła i przełknięcia. Użyłem węzła 10.16.1 i łyka 3.9.1.
Aby obniżyć swój łyk, możesz spróbować
źródło