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?
shershen
fonte
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'
Asimov
fonte
Obrigado @Jorge. Isso ajudou a resolver o problema. Ainda estou recebendo [email protected] / path / of / app com [email protected] 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.

analógico-nico
fonte
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 [email protected]. 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
Hamza Erbay
fonte
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!

David
fonte
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).

serv-inc
fonte
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.

Yohio
fonte
1

Consegui corrigi-lo da seguinte maneira:

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

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

Nicwenda
fonte
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.

Aziz Alto
fonte
0

O relatório diz: um arquivo está ausente em ... vendor / win32-x64-48 / binding.node

Procurei o arquivo binding.node e o encontrei em ...

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

Copie o arquivo correto com o nome binding.node e ele funciona.

David H
fonte
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
Magnus Ingwersen
fonte