web-dev-qa-db-fra.com

Comment réparer 'fs: la réévaluation des sources de modules natifs n'est pas prise en charge' - graceful-fs

Récemment, je suis passé à Node v.6, et il a commencé à créer de plus en plus de problèmes lors de l'exécution de versions normales de 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

tandis que gulp et tous les autres plugins et modules sont installés (et même réinstallés via 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 ce numéro, j'ai déjà envoyé - dans le repo angular2-seed https://github.com/mgechev/angular2-seed/issues/902

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

npm info graceful-fs -v
3.3.6

ok, permet de mettre à jour ou de supprimer et installer de nouvelles:

npm i graceful-fs@latest
npm i [email protected]
Sudo npm i [email protected] -g

tous les résultats en

npm info graceful-fs -v
3.3.6

Alors maintenant, je suis actuellement coincé avec graceful-fs 3.3.6 ou même pire dans certains dépendances de modules, comme

$ angular2-seed
$ npm install

//other lines..
npm WARN deprecated [email protected]: 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:

  • Appliquez manuellement un correctif à tous les dépôts contenant Graceful-fs <4.0.0?
  • Il existe un commutateur global pour utiliser une version de package spécifique?
  • Tout réinstaller?
161
shershen

J'ai eu ce problème et j'ai pu résoudre ce problème 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 le suivant:

version: '3.9.3'
169
Asimov

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

Dans mon cas j'ai eu:

npm list graceful-fs

@request/[email protected] /projects/request/promise-core
+-- [email protected]
| `-- [email protected]
|   +-- [email protected]
|   | `-- [email protected]
|   |   `-- [email protected]
|   |     `-- [email protected]
|   |       `-- [email protected]        <==== !!!
|   `-- [email protected] 
`-- [email protected]
  +-- [email protected]
  | `-- [email protected]
  |   `-- [email protected]
  |     `-- [email protected]
  |       `-- [email protected] 
  `-- [email protected]
    `-- [email protected]
      `-- [email protected]

Comme vous pouvez le constater, gulp dépend d'une version très ancienne. Malheureusement, je ne peux pas le mettre à jour moi-même avec npm update graceful-fs. gulp aurait besoin de mettre à jour leurs dépendances. Donc, si vous avez un cas comme celui-ci, 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.

73
analog-nico

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

npm uninstall gulp
npm install gulp
21
Hamza Erbay

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é tous les résultats (autre que la mise à jour complète).

1
serv-inc

J'ai pu le réparer en:

  1. mise à jour par package.json
  2. supprimer le dossier node_modules
  3. exécuter npm install
1
szuuuken

Suppression du contenu du dossier node_modules et exécution

npm install bower
npm install

résolu le problème pour moi!

1
David

Juste pour signaler que cordova apporte son propre npm avec la dépendance graceful-fs, donc si vous utilisez Cordova, assurez-vous qu’il s’agit de la dernière version pour obtenir le dernier f Graceful-fs.

1
Yohio

si vous utilisez nvm, vous voudrez peut-être exécuter nvm use <desired-node-version> Ceci conserve la cohérence du noeud avec npm

0
Nicwenda

Dans le cas de mon projet Cordova, la désinstallation et l'installation de cordova -g ont résolu le problème.

npm uninstall -g cordova
npm install -g cordova
0
Magnus Ingwersen

Le rapport indique: un fichier est manquant dans ... vendor/win32-x64-48/binding.node

J'ai cherché le fichier binding.node et je l'ai trouvé dans ...

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

Copiez le fichier correct avec le nom binding.node et cela fonctionnera.

0
David H

Ou essayez de mettre à jour node:

brew upgrade node

S'il est installé avec brew (comme dans mon cas). Sudo npm update -g npm n'a pas résolu le "même" problème pour moi.

0
Aziz Alto