So beheben Sie 'fs: Die Neubewertung nativer Modulquellen wird nicht unterstützt' - graceful-fs


162

Vor kurzem habe ich zu Node v.6 gewechselt und es entstanden immer mehr Probleme beim Ausführen normaler Builds grunt / gulp / webpack

Beispielsweise:

$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp

während gulp und alle anderen Plugins und Module rm -rf node_modulesim Ordner / node_modules installiert (und sogar über neu installiert ) werden.

Die meisten dieser Fehler haben linienähnliche

(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.

mit 42 als beliebige Zahl

Wie in dieser Ausgabe, die ich eingereicht habe - im Angular2-Seed-Repo https://github.com/mgechev/angular2-seed/issues/902

Was ich versucht habe, ist ein Downgrade auf Node v.5 über n ( https://www.npmjs.com/package/n ) - es hat funktioniert. Entfernen Sie dann alle node_modulesOrdner und tun Sie dies

npm info graceful-fs -v
3.3.6

ok, lass uns aktualisieren oder entfernen und neu installieren:

npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g

Alle Ergebnisse in

npm info graceful-fs -v
3.3.6

So , jetzt bin ich currenlty stecken mit anmutigen-fs 3.3.6 oder noch schlimmer in einigen Modulen dependances, wie

$ 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.

Was könnte die Strategie hier sein:

  • Manuelles Patchen aller Deps, die Graceful-Fs <4.0.0 enthalten?
  • Gibt es einen globalen Schalter, um eine bestimmte Paketversion zu verwenden?
  • Alles neu installieren?

Ich habe das gleiche Problem mit Gulp und einigen meiner Module. Ich habe meine Module durch ein Upgrade der Module auf die neuesten Graceful-Fs repariert, bin mir jedoch nicht sicher, ob es eine Lösung gibt, um andere Module zu reparieren, die noch nicht aktualisiert wurden.
Jeremy Chone

Sieht aus wie das wird nicht in Gulp 3.x festgelegt werden , und Sie werden auf Gulp 4.x aktualisieren haben github.com/gulpjs/gulp/issues/1571
dtothefp

Antworten:


170

Ich hatte dieses Problem und konnte es durch Aktualisierung beheben npm

sudo npm update -g npm

Vor dem Update war das Ergebnis von npm info graceful-fs | grep 'version:':

version: '3.3.12'

Nach dem Update ist das Ergebnis:

version: '3.9.3'

Danke @Jorge. Dies half, das Problem zu beheben. Ich erhalte immer noch appname@0.1.x / path / of / app, wobei graceful-fs@4.1.4 jedes Mal hervorgehoben wird, wenn ich npm install in meinem App-Verzeichnis ausführe. aber damit lebe ich jetzt.
Geo

Hallo @Geo, hier auch die Antwort von analog-nico, wir haben unterschiedliche Versionen desselben Pakets, da andere Tools streng von diesen Versionen abhängen. Um die Warnung zu entfernen, müssen wir alle aktualisieren oder nach Ersatz suchen.
Asimov

5
Das hat bei mir nicht funktioniert, ich musste rennennvm use v6.2.1
Nicwenda

46
Bitte beachten Sie, dass npm info graceful-fs -vdie Version von npm (entspricht der Ausführung npm -v) und NICHT Graceful-Fs zurückgegeben wird. Verwenden Sie etwas wie, um eine Graceful-Fs-Version zu erhalten npm info graceful-fs | grep version:.
nstCactus

6
@Asimov Das hat auch bei mir funktioniert. Wenn Sie NodeJS kürzlich neu installiert haben (ich habe Node über das Paket auf der Website installiert und dann durch das von Homebrew ersetzt), führen Sie es rm -rf node_modules && npm installim Home-Ordner des Projekts aus.
Dylanthepiguy

73

Geben npm list graceful-fsSie ein und Sie werden sehen, welche Versionen von graceful-fs derzeit installiert sind.

In meinem Fall habe ich:

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

Wie Sie gulptief im Inneren sehen können , hängt von einer sehr alten Version ab. Leider kann ich das nicht selbst mit aktualisieren npm update graceful-fs. gulpmüssten ihre Abhängigkeiten aktualisieren. Wenn Sie also einen solchen Fall haben, haben Sie kein Glück. Sie können jedoch ein Problem für das Projekt mit der alten Abhängigkeit öffnen, z gulp.


13
Zu Ihrer Information, in Ihrem speziellen Beispiel gulpwird es in Version 3 nicht geändert, sondern nur in Version 4: github.com/gulpjs/gulp/issues/1571
JBE

2
das war es für mich, letzter Druck, um Schluck zu entfernen
Darko Z

In meinem Fall kam die graceful-fsAbhängigkeit des Moduls vor v4 von sich npmselbst (Version 3.10.3) über cmd-shim@2.0.2. Ich habe dies erst gesehen, als ich die globalen graceful-fs Abhängigkeiten mit aufgelistet habe npm list -g graceful-fs.
Rusty Shackleford

Dies hat mir geholfen, es zu lösen. Mein Graceful-Fs-Paket war auf dem neuesten Stand, aber einige andere Pakete stützten sich immer noch auf eine ältere Version.
Skerit

21

Dieser Fehler wurde durch erneutes Installieren von gulp behoben

npm uninstall gulp
npm install gulp

Klingt so, als hätte gulp dieses Problem behoben - ich konnte mich nicht erinnern, ob ich gulp mit --save-dev installiert habe oder nicht, aber Ihr Weg hat von meinem Projektordner aus funktioniert.
landete

Das Problem wurde auch für mich
behoben

Ja, sieht aus wie ein älteres Gulp-Abhängigkeitsproblem.
Serraosays

1

Inhalt des Ordners node_modules löschen und ausführen

npm install bower
npm install

löste das Problem für mich!


1

Wie hier beschrieben , können Sie den Befehl auch versuchen

npm cache clean

Das hat es für mich behoben, nachdem die anderen Schritte nicht vollständig zu Ergebnissen geführt hatten (außer alles zu aktualisieren).


1

Nur um darauf hinzuweisen, dass Cordova seine eigene npm mit der Graceful-Fs-Abhängigkeit einbringt. Wenn Sie also Cordova verwenden, stellen Sie sicher, dass es die neueste ist, damit Sie auch die neuesten Graceful-Fs erhalten.


1

Ich konnte es beheben durch:

  1. Aktualisierung durch package.json
  2. Löschen des Ordners node_modules
  3. ausführen npm install

0

Wenn Sie nvm ausführen, möchten Sie möglicherweise ausführen. nvm use <desired-node-version>Dadurch bleibt der Knoten mit npm konsistent


0

Oder versuchen Sie zu aktualisieren node:

brew upgrade node

Wenn es mit installiert ist brew(wie in meinem Fall). sudo npm update -g npmhabe das "gleiche" Problem für mich nicht gelöst.


0

Der Bericht besagt: Eine Datei fehlt in ... vendor / win32-x64-48 / binding.node

Ich habe nach der Datei binding.node gesucht und finde sie in ...

https://github.com/sass/node-sass-binaries

Kopieren Sie die richtige Datei mit dem Namen binding.node und es funktioniert.


0

Bei meinem Cordova-Projekt wurde das Problem durch Deinstallieren und Installieren von cordova -g behoben.

npm uninstall -g cordova
npm install -g cordova
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.