Como corrigir 'fs: a reavaliação de fontes de módulos nativos não é suportada' - graceful-fs


162

Recentemente, mudei para o Nó v.6 e ele começou a criar mais e mais problemas ao executar builds normais grunt / gulp / webpack

Por exemplo:

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

enquanto o gulp e todos os outros plugins e módulos estão instalados (e até reinstalados via rm -rf node_modules) na pasta / node_modules.

A maioria desses erros tem linhas 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.

com 42 como número arbitrário

Como nessa edição que enviei - no repo angular2-seed https://github.com/mgechev/angular2-seed/issues/902

O que tentei fazer é fazer o downgrade para o Nó v.5 via n ( https://www.npmjs.com/package/n ) - funcionou. Em seguida, remova todas as node_modulespastas e faça

npm info graceful-fs -v
3.3.6

ok, vamos atualizar ou remover e instalar novos:

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

todos os resultados em

npm info graceful-fs -v
3.3.6

Então agora eu estou preso no graceful-fs 3.3.6 ou pior ainda em algumas dependências 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.

Qual poderia ser a estratégia aqui:

  • Corrigir manualmente todos os deps que contêm graceful-fs <4.0.0?
  • Existe alguma opção global para usar a versão específica do pacote?
  • Reinstalar tudo?

Estou tendo o mesmo problema com o Gulp e alguns dos meus módulos. Corrigi meus módulos atualizando os módulos para usar o graceful-fs mais recente, mas não tenho certeza de que exista uma solução para corrigir outros módulos que ainda não foram atualizados.
— Jeremy Chone

Parece que este não será corrigido em Gulp 3.xe você terá que atualizar para Gulp 4.x github.com/gulpjs/gulp/issues/1571
— dtothefp

Respostas:


170

Eu tive esse problema e consegui corrigir isso atualizando npm

sudo npm update -g npm

Antes da atualização, o resultado de npm info graceful-fs | grep 'version:'era:

version: '3.3.12'

Após a atualização, o resultado é:

version: '3.9.3'

Obrigado @Jorge. Isso ajudou a resolver o problema. Ainda estou recebendo appname@0.1.x / path / of / app com graceful-fs@4.1.4 realçado toda vez que executo o npm install no diretório do aplicativo. mas estou vivendo com isso por enquanto.
— Geo

Oi @Geo, mesmo aqui, veja a resposta pelo analog-nico, temos versões diferentes do mesmo pacote, porque outras ferramentas dependem estritamente dessas versões. Para se livrar do aviso, precisamos atualizar todos eles ou procurar substituições.
— Asimov

5
Isto não funcionou para mim, eu tive que corrernvm use v6.2.1
— Nicwenda

46
Observe que npm info graceful-fs -vretorna a versão do npm (é igual à execução npm -v) e NOT graceful-fs. Para obter a versão graciosa-fs, use algo como npm info graceful-fs | grep version:.
— NtCactus 17/07/2016

6
@ Asimov Isso funcionou para mim também. Além disso, se você reinstalou o NodeJS recentemente (instalei o Node através do pacote no site deles e o substituí pelo do homebrew), execute rm -rf node_modules && npm installna pasta inicial do projeto.
— Dylanthepiguy

73

Digite npm list graceful-fse você verá quais versões do graceful-fs estão atualmente instaladas.

No meu caso, obtive:

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 você pode ver no gulpfundo, depende de uma versão muito antiga. Infelizmente, não consigo atualizar isso usando npm update graceful-fs. gulpprecisaria atualizar suas dependências. Então, se você tem um caso como esse, está sem sorte. Mas você pode abrir um problema para o projeto com a dependência antiga - ou seja gulp.


13
FYI, no seu exemplo específico, gulpnão vai mudá-lo na versão 3, mas apenas na versão 4: github.com/gulpjs/gulp/issues/1571
— JBE

2
foi isso para mim, empurrão final para remover gole #
— Darko Z

No meu caso, a graceful-fsdependência do módulo pré-v4 vinha de npmsi mesma (versão 3.10.3) via cmd-shim@2.0.2. Não vi isso até listar as dependências globais graceful-fs usando npm list -g graceful-fs.
— Rusty Shackleford

Isso me ajudou a resolvê-lo. Meu pacote graceful-fs estava atualizado, mas alguns outros pacotes ainda contavam com uma versão mais antiga.
— Skerit 13/10/16

21

Resolvido esse bug com reinstalar gulp

npm uninstall gulp
npm install gulp

Parece que o gulp corrigiu esse problema - não me lembro se eu instalei o gulp com --save-dev ou não antes, mas seu caminho funcionou na minha pasta do projeto.
— desembarcou

Corrigido o problema para mim também
— Shady Keshk 23/03

Sim, parece um antigo problema de dependência do Gulp.
— Serraosays 4/17/17

1

Excluindo o conteúdo da pasta node_modules e executando

npm install bower
npm install

resolveu o problema para mim!


1

Conforme descrito aqui , você também pode tentar o comando

npm cache clean

Isso foi corrigido para mim, depois que as outras etapas não produziram resultados totalmente (além de atualizar tudo).


1

Apenas para salientar que o cordova traz seu próprio npm com a dependência do graceful-fs; portanto, se você usar o Cordova, verifique se ele é o mais recente, para obter os mais recentes graceful-fs.


1

Consegui corrigi-lo da seguinte maneira:

  1. atualizando por package.json
  2. excluindo a pasta node_modules
  3. executando npm install

0

se você estiver executando o nvm, poderá querer executar nvm use <desired-node-version>Isso mantém o nó consistente com o npm


0

Ou tente atualizar node:

brew upgrade node

Se estiver instalado com brew(como no meu caso). sudo npm update -g npmnão resolveu o "mesmo" problema para mim.



0

No caso do meu projeto Cordova, desinstalar e instalar o cordova -g corrigiu o problema para mim.

npm uninstall -g cordova
npm install -g cordova
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.