Daftar Sudut Pandang: caniuse-lite sudah usang. Silakan jalankan perintah berikutnya `npm pembaruan`

11

Saya baru-baru ini mulai mendapatkan kesalahan ini pada proyek Angular 8 (node ​​v10.16.0) yang saya kerjakan. Menjalankan npm memperbarui daftar browser caniuse-lite tidak melakukan apa-apa

Jadi saya menghapus package-lock.json, menghapus node_modules dan menjalankan npm install, tetapi file daftar browser telah hilang. Sekali lagi ketika saya menjalankan ng build, saya mendapatkan pesan yang sama: Browserslist: caniuse-lite sudah usang. Silakan jalankan perintah selanjutnyanpm update

Saya melihat posting ini pada topik yang sama: Daftar browser: caniuse-lite sudah usang. Silakan jalankan perintah berikutnya `npm perbarui caniuse-lite browserslist` Namun, ia berbicara tentang WebCompiler dan autoprefixer dan saya tidak tahu itu. Tolong dibimbing

Gegat
sumber
T: Apakah Anda membuat proyek Angular ini dengan Visual Studio? T: Apa yang terjadi ketika Anda hanya mengikuti instruksi dan berlari npm update caniuse-lite browserslist?
FoggyDay
1
Ya, proyek sudut menggunakan Visual Studio 2017. Tidak ada yang terjadi ketika saya menggunakan pembaruan npm caniuse-lite browser. Tidak ada yang memasang ...
SilverFish
Karena file browserlist hilang setelah saya menginstal npm baru (caniuse-lite ada di sana), apakah Anda merekomendasikan saya untuk menjalankan npm di browserlist?
SilverFish
saya baru saja mendapat masalah yang sama. di phpstrom ia memberitahu saya untuk menjalankan npm updatetetapi ini tidak menyelesaikan masalah, hanya membuat versi naskah saya menjadi tinggi untuk sudut 8.
BlakkM9
1
Saya mengalami masalah yang sama juga, Angular 8 menggunakan kode Visual Studio meskipun saya tidak yakin mengapa editor akan menyebabkan konflik ini. Ada jawaban untuk ini? Kami seharusnya merilis fitur besar baru minggu ini dan tentu saja sekarang aplikasi kami tidak akan membangun. Saya melihat beberapa node_modules kami menggunakan daftar browser
HomeBrew

Jawaban:

8

Memecahkan masalah usang caniuse-lite dengan menjalankan perintah di bawah ini.

npm cache clean  # optional
npm install caniuse-lite@latest --save
Dipten
sumber
npm cache cleantidak bekerja secara langsung karena ditangani oleh npm secara otomatis di versi terbaru. Apakah Anda ingin kami menggunakan --force? Jika ya, tolong jelaskan mengapa kita harus nuking cache.
Vishnudev
1
cache npm tidak diperlukan. Anda dapat langsung menjalankannpm install caniuse-lite@latest --save
Dipten
1
Menambahkan caniuse-lite ke aplikasi Anda (via package.json bloat) bukan ide yang baik, karena itu bukan ketergantungan aplikasi Anda - hanya npm toolset Anda. Lihat penjelasan lebih panjang di bawah. Juga '--simpan' adalah mubazir karena sekarang merupakan tindakan default dengan instal.
jdh
Instalasi caniuse-lite ini berhasil untuk saya, namun saya masih mendapatkan kesalahan yang sama.
nullmn
Saya mencoba dengan simpul 10.x dan diperbaiki. silakan periksa versi simpul Anda.
Dipten
2

TLDR: (mungkin tampak kontra-intuitif tanpa penjelasan)

  npm install caniuse-lite browserslist
  npm uninstall caniuse-lite browserslist

Penjelasan:

Pesan peringatan ini ("canisuse-lite sudah usang, tolong ....") adalah output oleh skrip dalam daftar browser selama build / start jika menemukan versi terinstal caniuse-lite lebih tua dari 2 versi dari versi saat ini. Jika tidak ada dalam proyek Anda yang berubah dan Anda tiba-tiba melihat pesan ini ketika memulai atau membangun proyek Anda, itu mungkin berarti ada pembaruan versi terbaru untuk caniuse-lite.

Sayangnya, pesan teks yang ditampilkan oleh browser hanya membantu jika Anda menginstal caniuse-lite sebagai ketergantungan proyek Anda. Kemungkinan besar, Anda tidak melakukannya. Jadi, ketika Anda menjalankan 'npm update caniuse-lite' atau 'npm update' caniuse-lite @ latest '(atau' npm install '), npm tidak melihat paket yang tercantum dalam dependensi package.json Anda, sehingga mengabaikan Permintaan.

Bagaimana paket-paket itu menjadi dependensi? Ketika proyek Anda dibuat (mungkin dengan aplikasi angularapp atau create-react-app atau serupa untuk kerangka kerja Anda), npm memasang daftar browser sebagai ketergantungan dari alat yang diperlukan, bukan sebagai salah satu dependensi proyek Anda. Pada saat yang sama, caniuse-lite diinstal sebagai dependensi dari daftar browser. Kemudian ketika proyek diperbarui, file package-lock.json dibuat yang mengunci semua dependensi ke versi tertentu.

Jika Anda dapat memperbarui informasi versi dalam daftar dependensi di package-lock.json, maka menjalankan 'npm install' akan memperbarui paket-paket ini dalam node_modules. Anda tidak boleh mengedit package-lock.json secara manual. Sebaliknya, cara terbaik untuk melakukannya adalah:

  1. Jadikan sementara paket-paket ini ketergantungan proyek Anda:

    npm pasang daftar browser caniuse-lite

    Selain memperbarui paket ke versi terbaru, ini memperbarui daftar ketergantungan di kedua package.json dan (yang paling penting) package-lock.json.

  2. Hapus paket-paket ini sebagai dependensi langsung dari proyek Anda:

    npm uninstall daftar browser caniuse-lite

    Karena paket-paket ini digunakan oleh dependensi lain, mereka tidak dihapus dari node_modules. Hanya package.json yang diperbarui untuk menghapusnya sebagai ketergantungan proyek.

  3. Komit package-lock.json. Orang lain sekarang dapat menjalankan 'npm install' untuk mendapatkan dua paket yang diperbarui dari daftar sub dependensi di package-lock.json, dan menghentikan pesan peringatan.

jdh
sumber
Saya telah mencoba solusi Anda tetapi saya masih memiliki peringatan dengan pesan ini (Browserslist: caniuse-lite sudah usang. Silakan jalankan perintah berikutnya npm update) dan dengan pengaturan sudut yang bersih.
Alexander Kushnir
@AlexanderKushir - setelah melakukan instalasi di langkah 1, lihat di node_modules untuk browser dan caniuse-lite untuk memeriksa apakah versi mereka dalam paket masing-masing.json telah diperbarui (harus 1.0.30001019 untuk caniuselite dan 4.8.3 untuk browser, sebagai hari ini). Versi baru daftar browser (4.8.3) seharusnya hanya mengeluh jika canisuelite tidak diperbarui. Apakah mungkin Anda memiliki server caching di .npmrc yang tidak memperbarui kedua paket ini? (Jika ya, coba ubah nama sementara .npmrc sebelum menginstal?)
jdh
Saya hanya harus melakukan semua itu caniuse-litedan pesannya hilang
MoonStom
@MoonStom - jika Anda hanya menginstal caniuse-lite, Anda menambahkannya sebagai ketergantungan aplikasi Anda, yang tidak akurat. Masalahnya ada di npm dan daftar browser. Setelah diperbaiki, aplikasi Anda seharusnya tidak bergantung pada caniuse-lite.
jdh