162 votes

Comment corriger 'fs : re-evaluating native module sources is not supported' - graceful-fs

Récemment, je suis passé à Node v.6, et cela a commencé à créer de plus en plus de problèmes avec l'exécution des constructions normales grunt/gulp/webpack.

Par exemple :

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

alors que gulp et tous les autres plugins et modules sont installés (et même réinstallés par l'intermédiaire de l'application rm -rf node_modules ) dans le dossier /node_modules.

La plupart de ces erreurs ont une ligne comme

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

avec 42 comme nombre arbitraire

Comme dans le problème que j'ai soumis - dans le repo d'angular2-seed. https://github.com/mgechev/angular2-seed/issues/902

Ce que j'ai essayé de faire est de rétrograder vers Node v.5 via n ( https://www.npmjs.com/package/n ) - cela a fonctionné. Ensuite, supprimez tous les node_modules dossiers, alors faites

npm info graceful-fs -v
3.3.6

ok, mettons à jour ou enlevons et installons le nouveau :

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

tous les résultats en

npm info graceful-fs -v
3.3.6

Donc maintenant, je suis coincé avec graceful-fs 3.3.6 ou pire encore dans les dépendances de certains modules, tels que

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

Quelle pourrait être la stratégie ici :

  • Patch manuel de toutes les deps qui contiennent graceful-fs < 4.0.0 ?
  • Il y a un commutateur global pour utiliser une version spécifique du paquet ?
  • Réinstaller tout ?

0 votes

J'ai le même problème avec Gulp et certains de mes modules. J'ai corrigé mes modules en les mettant à jour pour utiliser la dernière version de graceful-fs, mais je ne suis pas sûr qu'il existe une solution pour corriger les autres modules qui n'ont pas encore été mis à jour.

0 votes

Il semble que ce problème ne sera pas corrigé dans Gulp 3.x et que vous devrez passer à Gulp 4.x. github.com/gulpjs/gulp/issues/1571

170voto

Asimov Points 1835

J'ai eu ce problème et j'ai pu le régler en mettant à jour npm

sudo npm update -g npm

Avant la mise à jour, le résultat de npm info graceful-fs | grep 'version:' était :

version: '3.3.12'

Après la mise à jour, le résultat est :

version: '3.9.3'

0 votes

Merci @Jorge. Cela a permis de résoudre le problème. J'obtiens toujours appname@0.1.x /path/of/app avec graceful-fs@4.1.4 en surbrillance chaque fois que j'exécute npm install dans mon répertoire d'applications. mais je m'en accommode pour l'instant.

0 votes

Bonjour @Geo, même chose ici, regardez la réponse d'analog-nico, nous avons différentes versions du même paquet parce que d'autres outils dépendent strictement de ces versions. Pour se débarrasser de l'avertissement, nous devons tous les mettre à jour ou chercher des remplacements.

5 votes

Cela n'a pas fonctionné pour moi, j'ai dû courir. nvm use v6.2.1

73voto

analog-nico Points 2326

Type npm list graceful-fs et vous verrez quelles versions de graceful-fs sont actuellement installées.

Dans mon cas, j'ai obtenu :

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

Comme vous pouvez le constater gulp dépend au fond d'une très ancienne version. Malheureusement, je ne peux pas la mettre à jour moi-même en utilisant npm update graceful-fs . gulp devront mettre à jour leurs dépendances. Si vous êtes dans ce cas, vous n'avez pas de chance. Mais vous pouvez ouvrir un problème pour le projet avec l'ancienne dépendance - c'est à dire gulp .

13 votes

Pour votre information, dans votre exemple spécifique, gulp ne le changera pas dans la version 3 mais seulement dans la version 4 : github.com/gulpjs/gulp/issues/1571

2 votes

C'était la fin pour moi, le dernier coup pour enlever gulp

0 votes

Dans mon cas, la version pré-v4 graceful-fs La dépendance du module provenait de npm lui-même (version 3.10.3) par l'intermédiaire de cmd-shim@2.0.2 . Je ne l'ai pas vu avant d'avoir listé les mondial graceful-fs dépendances en utilisant npm list -g graceful-fs .

21voto

Hamza Erbay Points 396

Résolu ce bug avec la réinstallation de gulp

npm uninstall gulp
npm install gulp

0 votes

Il semble que gulp ait corrigé ce problème - je ne me souvenais pas si j'avais installé gulp avec --save-dev ou non auparavant, mais votre méthode a fonctionné à partir de mon dossier de projet.

0 votes

Le problème a été résolu pour moi aussi

0 votes

Oui, ça ressemble à un ancien problème de dépendance de Gulp.

1voto

David Points 16

Suppression du contenu du dossier node_modules et lancement de l'application

npm install bower
npm install

a résolu le problème pour moi !

1voto

user1587329 Points 91

Comme décrit ici vous pouvez également essayer la commande

npm cache clean

Cela a réglé le problème pour moi, après que les autres étapes n'aient pas donné de résultats complets (autres que la mise à jour de tout).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X