Cómo arreglar 'fs: no se admite la reevaluación de las fuentes del módulo nativo' - graceful-fs

162

Recientemente hice un cambio al Nodo v.6, y comenzó a crear más y más problemas con la ejecución de compilaciones normales grunt / gulp / webpack

Por ejemplo:

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

mientras que gulp y todos los demás complementos y módulos están instalados (e incluso reinstalados mediante rm -rf node_modules) en la carpeta / node_modules.

La mayoría de esos errores tienen líneas como

(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 como número arbitrario

Al igual que en el número que he enviado, en el repositorio angular2-seed https://github.com/mgechev/angular2-seed/issues/902

Lo que he intentado hacer es degradar al Nodo v.5 a través de n ( https://www.npmjs.com/package/n ): funcionó. Luego elimine todas las node_modulescarpetas, luego haga

npm info graceful-fs -v
3.3.6

ok, vamos a actualizar o eliminar e instalar nuevo:

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

todos los resultados en

npm info graceful-fs -v
3.3.6

Así que ahora estoy atrapado actualmente con graceful-fs 3.3.6 o incluso peor en algunas dependencias de módulos, como

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

¿Cuál podría ser la estrategia aquí?

  • ¿Parchear manualmente todos los deps que contienen graceful-fs <4.0.0?
  • ¿Hay algún cambio global para usar una versión de paquete específica?
  • Reinstalar todo?
Shershen
fuente
Tengo el mismo problema con Gulp y algunos de mis módulos. Arreglé mis módulos actualizándolos para usar los últimos graceful-fs, pero no estoy seguro de que haya una solución para arreglar otros módulos que aún no se han actualizado.
Jeremy Chone
Parece que esto no se solucionará en Gulp 3.xy tendrá que actualizar a Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

Respuestas:

170

Tuve este problema y pude solucionarlo actualizando npm

sudo npm update -g npm

Antes de la actualización, el resultado de npm info graceful-fs | grep 'version:'fue:

version: '3.3.12'

Después de la actualización, el resultado es:

version: '3.9.3'
Asimov
fuente
Gracias @Jorge. Esto ayudó a solucionar el problema. Todavía obtengo [email protected] / path / of / app con [email protected] resaltado cada vez que ejecuto npm install en mi directorio de aplicaciones. pero estoy viviendo con eso por ahora.
Geo
Hola @Geo, lo mismo aquí, mira la respuesta de analog-nico, tenemos diferentes versiones del mismo paquete porque otras herramientas dependen estrictamente de esas versiones. Para deshacernos de la advertencia, debemos actualizarlos todos o buscar reemplazos.
Asimov
55
Esto no funcionó para mí, tuve que corrernvm use v6.2.1
Nicwenda
46
Tenga en cuenta que npm info graceful-fs -vdevuelve la versión de npm (es lo mismo que ejecutar npm -v) y NO graceful-fs. Para obtener la versión agraciados-fs, algo así como el uso npm info graceful-fs | grep version:.
nstCactus
66
@Asimov Esto también funcionó para mí. Además, si reinstaló NodeJS recientemente (instalé Node a través del paquete en su sitio web y luego lo reemplacé con el de homebrew) ejecutado rm -rf node_modules && npm installen la carpeta de inicio del proyecto.
Dylanthepiguy
73

Escriba npm list graceful-fsy verá qué versiones de graceful-fs están instaladas actualmente.

En mi caso obtuve:

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

Como puede ver en el gulpfondo, depende de una versión muy antigua. Desafortunadamente, no puedo actualizar eso yo mismo usando npm update graceful-fs. gulpnecesitaría actualizar sus dependencias. Entonces, si tiene un caso como este, no tiene suerte. Pero puede abrir un problema para el proyecto con la antigua dependencia, es decir gulp.

analógico-nico
fuente
13
FYI, en su ejemplo específico, gulpno lo cambiará en la versión 3 sino solo en la versión 4: github.com/gulpjs/gulp/issues/1571
JBE
2
esto fue para mí, empuje final para eliminar el trago
Darko Z
En mi caso, la graceful-fsdependencia del módulo anterior a v4 provenía de npmsí misma (versión 3.10.3) a través de [email protected]. No vi esto hasta que enumeré las dependencias globales graceful-fs usando npm list -g graceful-fs.
Rusty Shackleford
Esto me ayudó a resolverlo. Mi paquete graceful-fs estaba actualizado, pero algunos otros paquetes todavía dependían de una versión anterior.
skerit
21

Resuelto este error con reinstalar trago

npm uninstall gulp
npm install gulp
Hamza Erbay
fuente
Parece que gulp ha solucionado este problema, no recuerdo si instalé gulp con --save-dev o no antes, pero tu forma funcionó desde mi carpeta de proyecto.
aterrizó el
También solucioné el problema para mí
Shady Keshk
Sí, parece un viejo problema de dependencia de Gulp.
serraosays
1

Eliminar el contenido de la carpeta node_modules y ejecutar

npm install bower
npm install

me resolvió el problema!

David
fuente
1

Como se describe aquí , también puede intentar el comando

npm cache clean

Eso lo solucionó para mí, después de que los otros pasos no habían dado resultados completos (aparte de actualizar todo).

serv-inc
fuente
1

Solo para señalar que cordova trae su propio npm con la dependencia graceful-fs, por lo que si usa Cordova asegúrese de que sea el último para que también obtenga los últimos graceful-fs.

Yohio
fuente
1

Pude arreglarlo:

  1. actualización por package.json
  2. eliminar la carpeta node_modules
  3. ejecutando npm install
szuuuken
fuente
0

si está ejecutando nvm, es posible que desee ejecutar nvm use <desired-node-version>Esto mantiene el nodo consistente con npm

Nicwenda
fuente
0

O intente actualizar node:

brew upgrade node

Si está instalado con brew(como en mi caso). sudo npm update -g npmno resolvió el "mismo" problema para mí.

Aziz Alto
fuente
0

El informe dice: falta un archivo en ... vendor / win32-x64-48 / binding.node

Busqué el archivo binding.node y lo encuentro en ...

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

Copie el archivo correcto con el nombre binding.node y funciona.

David H
fuente
0

En el caso de mi proyecto Cordova, desinstalar e instalar cordova -g me solucionó el problema.

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