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?

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'

Terima kasih @Jorge. Ini membantu memperbaiki masalah. Saya masih mendapatkan appname@0.1.x / path / of / app dengan anggun-fs@4.1.4 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.


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 cmd-shim@2.0.2. 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

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!


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


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.


1

Saya dapat memperbaikinya dengan:

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

0

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


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.



0

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

npm uninstall -g cordova
npm install -g cordova
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.