Jak naprawić błąd „fs: ponowna ocena źródeł modułów natywnych nie jest obsługiwana” - graceful-fs


162

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_modulesfoldery, 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?

Mam ten sam problem z Gulpem i niektórymi z moich modułów. Naprawiłem moje moduły, aktualizując je, aby używały najnowszego graceful-fs, ale nie jestem pewien, czy istnieje rozwiązanie do naprawy innych modułów, które nie zostały jeszcze zaktualizowane.
Jeremy Chone

Wygląda na to, że nie zostanie to naprawione w Gulp 3.x i będziesz musiał zaktualizować go do Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

Odpowiedzi:


170

Miałem ten problem i udało mi się to naprawić, aktualizując npm

sudo npm update -g npm

Przed aktualizacją wynik npm info graceful-fs | grep 'version:'był następujący:

version: '3.3.12'

Po aktualizacji wynik to:

version: '3.9.3'

Dzięki @Jorge. Pomogło to rozwiązać problem. Nadal otrzymuję appname@0.1.x / path / of / app z wyróżnionym graceful-fs@4.1.4 za każdym razem, gdy uruchamiam npm install w moim katalogu aplikacji. ale na razie z tym żyję.
Geo

Cześć @Geo, to samo tutaj, spójrz na odpowiedź analog-nico, mamy różne wersje tego samego pakietu, ponieważ inne narzędzia zależą ściśle od tych wersji. Aby pozbyć się tego ostrzeżenia, musimy zaktualizować je wszystkie lub poszukać zamienników.
Asimov

5
To nie zadziałało, musiałem biegaćnvm use v6.2.1
Nicwenda

46
Zwróć uwagę, że npm info graceful-fs -vzwraca wersję npm (jest taka sama jak running npm -v), a NIE graceful-fs. Aby uzyskać wersję graceful-fs, użyj czegoś takiego jak npm info graceful-fs | grep version:.
nstCactus

6
@Asimov U mnie też to zadziałało. Ponadto, jeśli niedawno ponownie zainstalowałeś NodeJS (zainstalowałem Node przez pakiet na ich stronie internetowej, a następnie zastąpiłem go pakietem z homebrew), uruchom rm -rf node_modules && npm installw folderze domowym projektu.
Dylanthepiguy

73

Wpisz, npm list graceful-fsa zobaczysz, które wersje graceful-fs są aktualnie zainstalowane.

W moim przypadku dostałem:

npm list graceful-fs

@request/promise-core@0.0.1 /projects/request/promise-core
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-watcher@0.0.6
|   | `-- gaze@0.5.2
|   |   `-- globule@0.1.0
|   |     `-- glob@3.1.21
|   |       `-- graceful-fs@1.2.3        <==== !!!
|   `-- graceful-fs@3.0.8 
`-- publish-please@2.1.3
  +-- nsp@2.4.0
  | `-- nodesecurity-npm-utils@4.0.1
  |   `-- silent-npm-registry-client@2.0.0
  |     `-- npm-registry-client@7.1.0
  |       `-- graceful-fs@4.1.3 
  `-- read-pkg@1.1.0
    `-- load-json-file@1.1.0
      `-- graceful-fs@4.1.4

Jak widać w gulpgłębi duszy zależy od bardzo starej wersji. Niestety nie mogę zaktualizować tego samodzielnie za pomocą npm update graceful-fs. gulpmusieliby 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ą - tj gulp.


13
FYI, w konkretnym przykładzie, gulpnie zmieni go w wersji 3, ale tylko w wersji 4: github.com/gulpjs/gulp/issues/1571
JBE

2
to było to dla mnie, ostatnia próba usunięcia łyka
Darko Z

W moim przypadku graceful-fszależność modułu przed v4 pochodziła z npmsamego siebie (wersja 3.10.3) za pośrednictwem cmd-shim@2.0.2. Nie widziałem tego, dopóki nie wymieniłem globalnych graceful-fs zależności za pomocą npm list -g graceful-fs.
Rusty Shackleford

To pomogło mi go rozwiązać. Mój pakiet graceful-fs był aktualny, ale kilka innych pakietów nadal opierało się na starszej wersji.
skerit

21

Rozwiązano ten błąd za pomocą ponownej instalacji gulp

npm uninstall gulp
npm install gulp

Wygląda na to, że gulp rozwiązał ten problem - nie pamiętałem, czy zainstalowałem go wcześniej z --save-dev, czy nie, ale twój sposób działał z folderu mojego projektu.
wylądował

Naprawiono ten problem również dla mnie
Shady Keshk

Tak, wygląda na starszy problem z uzależnieniem od Gulpa.
serraosays

1

Usuwanie zawartości folderu node_modules i uruchamianie

npm install bower
npm install

rozwiązał problem za mnie!


1

Jak opisano tutaj , możesz również spróbować wykonać polecenie

npm cache clean

To rozwiązało problem, ponieważ pozostałe kroki nie przyniosły w pełni wyników (poza aktualizacją wszystkiego).


1

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.


1

Udało mi się to naprawić poprzez:

  1. aktualizacja przez package.json
  2. usuwanie folderu node_modules
  3. wykonanie npm install

0

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


0

Lub spróbuj zaktualizować node:

brew upgrade node

Jeśli jest zainstalowany z brew(jak w moim przypadku). sudo npm update -g npmnie rozwiązało dla mnie „tego samego” problemu.



0

W przypadku mojego projektu Cordova odinstalowanie i zainstalowanie Cordova -g rozwiązało problem za mnie.

npm uninstall -g cordova
npm install -g cordova
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.