Niedawno przestawiłem się na Node v.6 i zaczęło stwarzać coraz więcej problemów z uruchamianiem normalnych kompilacji grunt / gulp / webpack
Na przykład:
$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp
podczas gdy gulp i wszystkie inne wtyczki i moduły są instalowane (a nawet ponownie instalowane przez rm -rf node_modules
) w folderze / node_modules.
Większość z tych błędów ma postać linii
(node:42) fs: re-evaluating native module sources is not supported.
If you are using the graceful-fs module,
please update it to a more recent version.
z 42 jako dowolną liczbą
Jak w tym numerze, które przesłałem - w repozytorium angular2-seed https://github.com/mgechev/angular2-seed/issues/902
To, co próbowałem zrobić, to przejść na Node v.5 przez n ( https://www.npmjs.com/package/n ) - zadziałało. Następnie usuń wszystkie node_modules
foldery, a następnie zrób
npm info graceful-fs -v
3.3.6
ok, zaktualizujmy lub usuń i zainstaluj nowe:
npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g
wszystkie wyniki w
npm info graceful-fs -v
3.3.6
Więc teraz utknąłem z graceful-fs 3.3.6 lub nawet gorzej w niektórych zależnościach modułów, takich jak
$ angular2-seed
$ npm install
//other lines..
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before
will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0
as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
Jaka może być tutaj strategia:
- Czy ręcznie załatać wszystkie deps, które zawierają graceful-fs <4.0.0?
- Jest jakiś globalny przełącznik do używania określonej wersji pakietu?
- Zainstalować wszystko ponownie?
źródło
Odpowiedzi:
Miałem ten problem i udało mi się to naprawić, aktualizując
npm
Przed aktualizacją wynik
npm info graceful-fs | grep 'version:'
był następujący:Po aktualizacji wynik to:
źródło
nvm use v6.2.1
npm info graceful-fs -v
zwraca wersję npm (jest taka sama jak runningnpm -v
), a NIE graceful-fs. Aby uzyskać wersję graceful-fs, użyj czegoś takiego jaknpm info graceful-fs | grep version:
.rm -rf node_modules && npm install
w folderze domowym projektu.Wpisz,
npm list graceful-fs
a zobaczysz, które wersje graceful-fs są aktualnie zainstalowane.W moim przypadku dostałem:
Jak widać w
gulp
głębi duszy zależy od bardzo starej wersji. Niestety nie mogę zaktualizować tego samodzielnie za pomocąnpm update graceful-fs
.gulp
musieliby zaktualizować swoje zależności. Więc jeśli masz taki przypadek, nie masz szczęścia. Ale możesz otworzyć problem dla projektu ze starą zależnością - tjgulp
.źródło
gulp
nie zmieni go w wersji 3, ale tylko w wersji 4: github.com/gulpjs/gulp/issues/1571graceful-fs
zależność modułu przed v4 pochodziła znpm
samego siebie (wersja 3.10.3) za pośrednictwem[email protected]
. Nie widziałem tego, dopóki nie wymieniłem globalnychgraceful-fs
zależności za pomocąnpm list -g graceful-fs
.Rozwiązano ten błąd za pomocą ponownej instalacji gulp
źródło
Usuwanie zawartości folderu node_modules i uruchamianie
rozwiązał problem za mnie!
źródło
Jak opisano tutaj , możesz również spróbować wykonać polecenie
To rozwiązało problem, ponieważ pozostałe kroki nie przyniosły w pełni wyników (poza aktualizacją wszystkiego).
źródło
Wystarczy zaznaczyć, że cordova wnosi swój własny npm z zależnością graceful-fs, więc jeśli używasz Cordova, upewnij się, że jest najnowszy, aby uzyskać najnowsze graceful-fs.
źródło
Udało mi się to naprawić poprzez:
package.json
npm install
źródło
jeśli używasz nvm, możesz chcieć go uruchomić.
nvm use <desired-node-version>
Dzięki temu węzeł jest spójny z npmźródło
Lub spróbuj zaktualizować
node
:Jeśli jest zainstalowany z
brew
(jak w moim przypadku).sudo npm update -g npm
nie rozwiązało dla mnie „tego samego” problemu.źródło
Raport mówi: brak pliku w ... vendor / win32-x64-48 / binding.node
Szukałem pliku binding.node i znajduję go w ...
https://github.com/sass/node-sass-binaries
Skopiuj poprawny plik o nazwie binding.node i działa.
źródło
W przypadku mojego projektu Cordova odinstalowanie i zainstalowanie Cordova -g rozwiązało problem za mnie.
źródło