npm PERHATIAN notsup LEWATKAN KETERGANTUNGAN OPSIONAL: Platform tidak didukung untuk [email protected]

113

Saya mencoba menjalankan proyek ini https://github.com/Soundnode/soundnode-app setelah memperbarui versi minimatch saya ke 3.10.9, saya mendapatkan kesalahan ini

npm WARN opsional LEWATKAN KETERGANTUNGAN OPSIONAL: fsevents@^1.0.0 (node_modules \ webpack \ node_modules \ watchpack \ node_modules \ chokidar \ node_modules \ fsevents): npm WARN notsup SKipping OPTIONAL DEPENDENCY: Platform tidak didukung untuk [email protected] os ":" darwin "," arch ":" any "} (saat ini: {" os ":" win32 "," arch ":" ia32 "})

konfigurasi saya adalah Node v - 4.4.2 npm v- 3.10.9 im bekerja pada OS windows 32 bit

Aishwary Tiwari
sumber
1
Tidak terdengar seperti kesalahan bagi saya - apakah Anda mengalami masalah dalam menjalankan kode meskipun demikian? npm WARNhanya itu - peringatan yang mungkin perlu diperhatikan, tetapi tidak benar-benar merusak apa pun.
Aurora0001
2
Dan peringatan khusus ini hanya memberi tahu Anda bahwa ketergantungan opsional tidak diinstal karena platform Anda tidak sesuai dengan persyaratannya. Dalam hal ini mencari darwin dan Anda berada di win32
Dave V
ini adalah proyek kasar, setelah menjalankan perintah ini "npm install -g grunt-cli", saya mencoba menjalankan npm install ketika saya mendapatkan peringatan ini,
Aishwary Tiwari
1
@AishwaryTiwari, apakah Anda benar-benar mendapatkan kesalahan, atau apakah kodenya tidak berfungsi? Peringatan tidak mungkin menjadi masalah yang sebenarnya, karena (seperti yang dikatakan pesan kesalahan), ini melewatkan ketergantungan opsional.
Aurora0001
1
Ada permintaan tarik yang memperbaiki masalah: github.com/npm/npm/pull/19198 Anda dapat berlangganan permintaan tarik itu, jadi Anda mendapatkan pembaruan ketika permintaan itu akan ditutup.
RiZKiT

Jawaban:

150

Ini peringatan, bukan kesalahan. Ini terjadi karena fseventsmerupakan ketergantungan opsional, hanya digunakan saat proyek dijalankan di lingkungan macOS (paket menyediakan 'Akses Asli ke Mac OS-X FSEvents').

Dan karena Anda menjalankan proyek Anda di Windows, fseventsdilewati sebagai tidak relevan.

Ada PR untuk memperbaiki perilaku ini di sini: https://github.com/npm/cli/pull/169

piotr.d
sumber
35
Bukankah sesuatu yang opsional dan bergantung bertentangan itu sendiri?
Martijn Burger
7
Itu lebih merupakan pertanyaan teoritis. Mungkin conditional dependencylebih baik? Penamaan itu sulit. Saya kira tidak mudah untuk menemukan nama yang baik untuk kasus ini dengan tetap ringkas.
piotr.d
10
npm install --no-optional
suiwenfeng
5
Saya sangat setuju, @DemPilafian. Jadi saya mengedit tanggapan asli saya dan menghapus "hanya". Saya pribadi memperlakukan peringatan seperti kesalahan, tetapi dalam kasus ini, IMHO, ini tidak boleh dicatat sebagai peringatan, melainkan info, karena di lingkungan Windows Anda tidak dapat melakukan apa pun untuk membuat peringatan itu hilang.
piotr.d
23
Jawaban yang bagus, sekarang bagaimana cara menghilangkannya?
TetraDev
32

Tampaknya ini masih menjadi masalah, menyebabkan penginstalan paket dibatalkan dengan peringatan tentang paket opsional tidak diinstal karena "Platform tidak didukung".

Masalahnya terkait dengan "shrinkwrap" atau package-lock.jsonyang tetap ada setelah setiap eksekusi pengelola paket. Upaya selanjutnya tetap gagal karena file ini direferensikan, bukan package.json.

Menambahkan opsi ini ke npm installperintah akan memungkinkan paket untuk diinstal lagi.

   --no-optional argument will prevent optional dependencies from being installed.

   --no-shrinkwrap argument, which will ignore an available package lock or
                   shrinkwrap file and use the package.json instead.

   --no-package-lock argument will prevent npm from creating a package-lock.json file.

Perintah lengkapnya terlihat seperti ini:

    npm install --no-optional --no-shrinkwrap --no-package-lock

nJoy!

nickl-
sumber
1
Apakah berisiko menyetel --no-optional-bendera untuk kode yang berfungsi hanya untuk menghilangkan peringatan? Mengapa tidak diatur secara default?
cederlof
5
Ini tidak bisa menjadi solusi karena menggunakan package-lock.json adalah hal yang baik dan solusi ini menyarankan sebaliknya.
ismailarilik
@ismailarilik Solusi ini memungkinkan saya untuk menginstal paket sehingga saya dapat melanjutkan pekerjaan saya.
nickl-
"--tidak opsional" adalah Ide yang sangat, sangat buruk. Biasanya tidak masalah untuk mengabaikan peringatan tersebut. Anda juga dapat menggunakan npm install -f: github.com/angular/angular/issues/13935
FoggyDay
12

Menggunakan parameter --force:

npm i -f
JFs
sumber
2
Saya memang memaksa instalasi sekali dengan perintah ini dan sekarang ketika saya meluncurkan npm installsaya tidak memiliki peringatan terima kasih!
Allenile
1
Saya mendapat beberapa kesalahan saat menjalankan perintah itu, tetapi setelah menjalankan kembali npm install, peringatannya hilang! terima kasih pak
ccoutinho
Jadi Anda menginstal di proyek Anda dependensi yang tidak berguna (di mesin windows) untuk mengeluarkan peringatan? Jika demikian, saya berharap getaran pohon menyingkirkan mereka di gedung produksi. Saya suka solusi tersebut. Itu menghilangkan hal-hal yang berhubungan dengan apel di layar saya.
Josep Alacid