Cara memperbaiki 'fs: mengevaluasi ulang sumber modul asli tidak didukung' - anggun-fs

162

Baru-baru ini saya telah beralih ke Node v.6, dan mulai membuat lebih banyak masalah dengan menjalankan build normal grunt / gulp / webpack

Sebagai contoh:

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

sementara tegukan dan semua plugin dan modul lainnya diinstal (dan bahkan diinstal ulang melalui rm -rf node_modules) di folder / node_modules.

Sebagian besar kesalahan memiliki garis seperti

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

dengan 42 sebagai nomor acak

Seperti dalam masalah yang saya kirimkan - dalam repo angular2-seed https://github.com/mgechev/angular2-seed/issues/902

Apa yang saya coba lakukan adalah menurunkan versi ke Node v.5 via n ( https://www.npmjs.com/package/n ) - itu berhasil. Kemudian hapus semua node_modulesfolder, lalu lakukan

npm info graceful-fs -v
3.3.6

ok, mari perbarui atau hapus dan pasang yang baru:

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

semua hasil dalam

npm info graceful-fs -v
3.3.6

Jadi sekarang saya currenlty terjebak dengan anggun-fs 3.3.6 atau bahkan lebih buruk dalam beberapa dependensi modul, seperti

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

Apa yang bisa menjadi strategi di sini:

  • Secara manual menambal semua deps yang berisi anggun-fs <4.0.0?
  • Ada beberapa peralihan global untuk menggunakan versi paket tertentu?
  • Pasang kembali semuanya?
Shershen
sumber
Saya mengalami masalah yang sama dengan Gulp dan beberapa modul saya. Saya memperbaiki modul saya dengan meningkatkan modul untuk menggunakan anggun-fs terbaru, tetapi saya tidak yakin ada solusi untuk memperbaiki modul lain yang belum di-upgrade.
Jeremy Chone
Sepertinya ini tidak akan diperbaiki di Gulp 3.x dan Anda harus meng-upgrade ke Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

Jawaban:

170

Saya punya masalah ini dan saya bisa memperbaikinya dengan memperbarui npm

sudo npm update -g npm

Sebelum pembaruan, hasilnya npm info graceful-fs | grep 'version:'adalah:

version: '3.3.12'

Setelah pembaruan, hasilnya adalah:

version: '3.9.3'
Asimov
sumber
Terima kasih @Jorge. Ini membantu memperbaiki masalah. Saya masih mendapatkan [email protected] / path / of / app dengan [email protected] disorot setiap kali saya menjalankan npm install di direktori aplikasi saya. tapi saya hidup dengan itu untuk saat ini.
Geo
Hai @ Geo, sama di sini, lihat jawabannya dengan analog-nico, kami memiliki versi berbeda dari paket yang sama karena alat lain sangat bergantung pada versi tersebut. Untuk menghilangkan peringatan tersebut, kita perlu memutakhirkan semuanya atau mencari penggantian.
Asimov
5
Ini tidak berhasil untuk saya, saya harus berlarinvm use v6.2.1
Nicwenda
46
Harap dicatat bahwa npm info graceful-fs -vmengembalikan versi npm (sama dengan menjalankan npm -v) dan BUKAN anggun-fs. Untuk mendapatkan versi anggun-fs, gunakan sesuatu seperti npm info graceful-fs | grep version:.
nstCactus
6
@ Asimov Ini bekerja untuk saya juga. Juga, jika Anda menginstal ulang NodeJS baru-baru ini (saya menginstal Node melalui paket di situs web mereka dan kemudian menggantinya dengan yang dari homebrew) berjalan rm -rf node_modules && npm installdi folder home proyek.
Dylanthepiguy
73

Ketik npm list graceful-fsdan Anda akan melihat versi anggun-fs mana yang saat ini diinstal.

Dalam kasus saya, saya mendapat:

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

Seperti yang Anda lihat gulpjauh di dalam, tergantung pada versi yang sangat lama. Sayangnya, saya tidak dapat memperbarui itu sendiri npm update graceful-fs. gulpperlu memperbarui dependensi mereka. Jadi, jika Anda memiliki kasus seperti ini, Anda kurang beruntung. Tetapi Anda dapat membuka masalah untuk proyek dengan ketergantungan lama - yaitu gulp.

analog-nico
sumber
13
FYI, dalam contoh spesifik Anda, gulptidak akan mengubahnya dalam versi 3 tetapi hanya dalam versi 4: github.com/gulpjs/gulp/issues/1571
JBE
2
ini untuk saya, dorongan terakhir untuk menghapus tegukan
Darko Z
Dalam kasus saya, graceful-fsketergantungan modul pre-v4 berasal dari npmdirinya sendiri (versi 3.10.3) via [email protected]. Saya tidak melihat ini sampai saya mendaftar menggunakan dependensi global . graceful-fsnpm list -g graceful-fs
Rusty Shackleford
Ini membantu saya menyelesaikannya. Paket anggun-fs saya terbaru, tetapi beberapa paket lainnya masih mengandalkan versi yang lebih lama.
skerit
21

Mengatasi bug ini dengan menginstal ulang tegukan

npm uninstall gulp
npm install gulp
Hamza Erbay
sumber
Kedengarannya seperti tegukan telah memperbaiki masalah ini - tidak bisa mengingat apakah saya menginstal tegukan dengan --save-dev atau tidak sebelumnya tetapi cara Anda bekerja dari folder proyek saya.
mendarat
Memperbaiki masalah untuk saya juga
Shady Keshk
Ya, sepertinya masalah ketergantungan Gulp yang lebih tua.
Serraosays
1

Menghapus isi folder node_modules dan berjalan

npm install bower
npm install

memecahkan masalah untuk saya!

David
sumber
1

Seperti dijelaskan di sini , Anda juga dapat mencoba perintah

npm cache clean

Itu memperbaikinya bagi saya, setelah langkah-langkah lain belum sepenuhnya memberikan hasil (selain memperbarui semuanya).

serv-inc
sumber
1

Hanya untuk menunjukkan bahwa cordova membawa npm itu sendiri dengan ketergantungan anggun-fs, jadi jika Anda menggunakan Cordova pastikan itu adalah yang terbaru sehingga Anda mendapatkan anggun-fs terbaru dari itu juga.

Yohio
sumber
1

Saya dapat memperbaikinya dengan:

  1. memperbarui oleh package.json
  2. menghapus folder node_modules
  3. mengeksekusi npm install
szuuuken
sumber
0

jika Anda menjalankan nvm Anda mungkin ingin menjalankan nvm use <desired-node-version>ini menjaga simpul konsisten dengan npm

Nicwenda
sumber
0

Atau coba perbarui node:

brew upgrade node

Jika sudah diinstal dengan brew(seperti dalam kasus saya). sudo npm update -g npmtidak memecahkan masalah "sama" untuk saya.

Aziz Alto
sumber
0

Laporan itu mengatakan: file hilang di ... vendor / win32-x64-48 / binding.node

Saya mencari file binding.node dan saya menemukannya di ...

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

Salin file yang benar dengan nama binding.node dan berfungsi.

David H
sumber
0

Dalam kasus proyek Cordova saya, menghapus dan menginstal cordova -g memperbaiki masalah bagi saya.

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