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.