Come risolvere 'fs: la rivalutazione delle fonti del modulo nativo non è supportata' - graceful-fs


162

Recentemente sono passato al Nodo v.6 e ha iniziato a creare sempre più problemi con l'esecuzione di build normali grunt / gulp / webpack

Per esempio:

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

mentre gulp e tutti gli altri plugin e moduli sono installati (e persino reinstallati tramite rm -rf node_modules) nella cartella / node_modules.

La maggior parte di questi errori ha una linea simile

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

con 42 come numero arbitrario

Come in quel numero che ho presentato - nel repository angular2-seed https://github.com/mgechev/angular2-seed/issues/902

Quello che ho provato a fare è il downgrade al Nodo v.5 via n ( https://www.npmjs.com/package/n ) - ha funzionato. Quindi rimuovere tutte le node_modulescartelle, quindi fare

npm info graceful-fs -v
3.3.6

ok, consente di aggiornare o rimuovere e installare nuovi:

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

tutti i risultati in

npm info graceful-fs -v
3.3.6

Quindi ora sono bloccato bloccato con graceful-fs 3.3.6 o anche peggio in alcune dipendenze di moduli, come

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

Quale potrebbe essere la strategia qui:

  • Patch manualmente tutti i deps che contengono graceful-fs <4.0.0?
  • C'è qualche passaggio globale per utilizzare la versione del pacchetto specifico?
  • Reinstallare tutto?

Sto riscontrando lo stesso problema con Gulp e alcuni dei miei moduli. Ho riparato i miei moduli aggiornando i moduli per usare gli ultimi graceful-fs, ma non sono sicuro che esista una soluzione per riparare altri moduli che non sono ancora stati aggiornati.
Jeremy Chone,

Sembra che questo non sarà risolto in Gulp 3.x e dovrai eseguire l'aggiornamento a Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

Risposte:


170

Ho avuto questo problema e sono stato in grado di risolverlo aggiornando npm

sudo npm update -g npm

Prima dell'aggiornamento, il risultato npm info graceful-fs | grep 'version:'era:

version: '3.3.12'

Dopo l'aggiornamento il risultato è:

version: '3.9.3'

Grazie @Jorge. Ciò ha contribuito a risolvere il problema. Ricevo ancora appname@0.1.x / path / of / app con graceful-fs@4.1.4 evidenziato ogni volta che eseguo npm install nella mia directory dell'app. ma sto vivendo con quello per ora.
Geo,

Ciao @Geo, lo stesso qui, guarda la risposta di analog-nico, abbiamo diverse versioni dello stesso pacchetto perché altri strumenti dipendono strettamente da quelle versioni. Per eliminare l'avviso è necessario aggiornarli tutti o cercare sostituzioni.
Asimov,

5
Non ha funzionato per me, dovevo correrenvm use v6.2.1
Nicwenda,

46
Nota che npm info graceful-fs -vrestituisce la versione di npm (è la stessa di running npm -v) e NON graceful-fs. Per ottenere la versione di graceful-fs, usa qualcosa di simile npm info graceful-fs | grep version:.
nstCactus,

6
@Asimov Questo ha funzionato anche per me. Inoltre, se hai reinstallato NodeJS di recente (ho installato Node attraverso il pacchetto sul loro sito Web e poi sostituito con quello dall'homebrew), esegui rm -rf node_modules && npm installnella cartella home del progetto.
Dylanthepiguy,

73

Digita npm list graceful-fse vedrai quali versioni di graceful-fs sono attualmente installate.

Nel mio caso ho ottenuto:

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

Come puoi vedere in gulpfondo dipende da una versione molto vecchia. Sfortunatamente, non posso aggiornarlo da solo npm update graceful-fs. gulpdovrebbero aggiornare le loro dipendenze. Quindi se hai un caso come questo sei sfortunato. Ma potresti aprire un problema per il progetto con la vecchia dipendenza, ad es gulp.


13
FYI, nel tuo esempio specifico, gulpnon lo modificherà nella versione 3 ma solo nella versione 4: github.com/gulpjs/gulp/issues/1571
JBE

2
questo è stato per me, spinta finale per rimuovere il sorso
Darko Z

Nel mio caso, la graceful-fsdipendenza del modulo pre-v4 proveniva da npmse stessa (versione 3.10.3) tramite cmd-shim@2.0.2. Non l'ho visto fino a quando non ho elencato le dipendenze globali graceful-fs usando npm list -g graceful-fs.
Rusty Shackleford,

Questo mi ha aiutato a risolverlo. Il mio pacchetto graceful-fs era aggiornato, ma alcuni altri pacchetti si basavano ancora su una versione precedente.
skerit,

21

Risolto questo problema con reinstallazione gulp

npm uninstall gulp
npm install gulp

Sembra che gulp abbia risolto questo problema - non ricordo se ho installato gulp con --save-dev o no prima, ma a modo tuo ha funzionato dalla cartella del mio progetto.
sbarcò il

Risolto il problema anche per me
Shady Keshk,

Sì, sembra un vecchio problema di dipendenza da Gulp.
serraosays,

1

Eliminazione del contenuto della cartella node_modules ed esecuzione

npm install bower
npm install

risolto il problema per me!


1

Come descritto qui , puoi anche tentare il comando

npm cache clean

Ciò ha risolto il problema per me, dopo che gli altri passaggi non avevano prodotto risultati (oltre all'aggiornamento di tutto).


1

Solo per sottolineare che Cordova porta il proprio npm con la dipendenza graceful-fs, quindi se usi Cordova assicurati che sia l'ultimo, in modo da ottenere anche gli ultimi graceful-fs da quello.


1

Sono stato in grado di risolverlo tramite:

  1. aggiornamento di package.json
  2. eliminazione della cartella node_modules
  3. esecuzione npm install

0

se stai eseguendo nvm potresti voler eseguire nvm use <desired-node-version>Ciò mantiene il nodo coerente con npm


0

Oppure prova ad aggiornare node:

brew upgrade node

Se è installato con brew(come nel mio caso). sudo npm update -g npmnon ha risolto lo "stesso" problema per me.



0

Nel caso del mio progetto Cordova, disinstallare e installare cordova -g ha risolto il problema per me.

npm uninstall -g cordova
npm install -g cordova
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.