Cli: [BUG] npm unpublish mengembalikan kesalahan 404 dan bukan kesalahan tercetak kecuali verbose loglevel digunakan

Dibuat pada 29 Jun 2020  ·  14Komentar  ·  Sumber: npm/cli

Apa sebabnya

npm unpublish tidak berfungsi, dan tidak menampilkan kesalahan apa pun meskipun registri menjawab dengan kode 404.

Kapan

npm unpublish @siliceum/[email protected] --loglevel verbose

Dimana

npm public registry

Bagaimana

Perilaku Saat Ini

Baris perintah hanya mencetak

sedangkan server menjawab dengan kesalahan 404.

Juga, titik akhir https://registry.npmjs.org/@siliceum%2fcalcite-cli mengembalikan informasi tetapi versi dengan ?write=true ( https://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true ) mengembalikan kesalahan 404 tidak ditemukan.

Langkah-langkah untuk Mereproduksi

npm unpublish @siliceum/[email protected]

Perilaku yang Diharapkan

Paket tidak diterbitkan atau kesalahan dicetak. (pada akhirnya, sesuatu yang lain dari 404).
Dengan loglevel verbose dimungkinkan untuk memiliki keluaran berikut

npm unpublish @siliceum/[email protected] --loglevel verbose

npm info itu berhasil jika diakhiri dengan ok
npm kata kerja cli [
npm kata kerja cli 'C: \ Program Files \ nodejs \ node.exe',
npm kata kerja cli 'C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ npm-cli.js',
npm kata kerja cli 'batalkan penerbitan',
npm kata kerja cli '@ siliceum / [email protected] ',
npm verb cli '--loglevel',
npm kata kerja cli 'verbose'
npm verb cli]
info npm menggunakan
info npm menggunakan
npm kata kerja npm-sesi e43c8f8257e968e5
npm http ambil GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli ? write = true 492ms

  • @ siliceum / [email protected]
    keluar kata kerja npm [0, true]
    npm timing npm Selesai dalam 1157ms
    info npm ok
Bug

Komentar yang paling membantu

Ups! Lupakan itu, saya baru saja keluar dan masuk kembali dan sekarang kedua fungsi berfungsi, aneh, maaf atas kebingungan!

Semua 14 komentar

Juga mengalami masalah ini dengan npm unpublish dan npm deprecate !

$ npm deprecate --force --verbose [email protected] "Generates errors related to exports in the browser, use 1.2.2 or newer"
...
npm http fetch GET 200 https://registry.npmjs.org/luar?write=true 328ms
npm http fetch PUT 404 https://registry.npmjs.org/luar 98ms
npm verb stack Error: 404 Not Found - PUT https://registry.npmjs.org/luar - Not found
npm verb stack     at /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:114:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm verb statusCode 404
npm verb pkgid [email protected]
...
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/luar - Not found
npm ERR! 404 
npm ERR! 404  '[email protected]' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
...
$ npm unpublish --force --verbose [email protected]
...
npm http fetch GET 200 https://registry.npmjs.org/luar?write=true 257ms
npm http fetch PUT 404 https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 99ms
npm verb stack Error: 404 Not Found - PUT https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 - Not found
npm verb stack     at /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:114:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:93:5)
npm verb statusCode 404
npm verb pkgid [email protected]
...
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/luar/-rev/5-260b27ca1cdb4a5d3b4175578e1c0300 - Not found
npm ERR! 404 
npm ERR! 404  '[email protected]' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
...

Mengalami masalah yang sama saat menjalankan npm deprecate - mendapatkan kembali 404 Not Found. Penyebabnya adalah karena saya tidak diautentikasi dengan benar ( npm adduser mengurutkannya) - tetapi keluaran Not Found mengarahkan Anda pada garis singgung. Meskipun tidak ada kemungkinan bagi API server untuk mengembalikan kode status yang berbeda (seperti 401), beberapa keluaran dari perintah ini untuk menyarankan masuk akan bagus. Keluarannya bisa generik dan selalu ditampilkan ("pastikan Anda masuk!") Atau bisa ditampilkan jika Anda tidak memiliki authToken.

Tapi saya masuk! Ini adalah sesi terminal yang sama persis di mana saya baru saja menerbitkan versi baru sebagai pemilik paket

Ups! Lupakan itu, saya baru saja keluar dan masuk kembali dan sekarang kedua fungsi berfungsi, aneh, maaf atas kebingungan!

@luawtf Ah, dalam hal ini, sepertinya ini adalah situasi yang sama seperti milik saya - perintah ini menampilkan 404 Not Found ketika masalah sebenarnya terkait dengan otentikasi.

Ya! Saya setuju bahwa kesalahan yang lebih umum dan panjang lebar akan sangat bagus.
Selain itu, mengapa registri mengembalikan 404 ketika 401 Tidak Resmi akan lebih masuk akal, bukankah seharusnya itu juga diperbaiki?

Sepakat. Tampaknya aneh untuk paket yang sudah bersifat publik - tidak ada yang bisa diperoleh dari segi keamanan dengan mengembalikan 404 daripada 401 dalam kasus ini. Masuk akal jika sebuah paket bersifat pribadi, seperti bagaimana GitHub menunjukkan 404 jika Anda mencoba dan mengakses repo pribadi saat keluar sehingga tidak memberikan fakta bahwa ada apa pun di URL itu.

Saya dapat mengonfirmasi bahwa masalahnya adalah saya tidak masuk.
Mengembalikan 401 atau memiliki pesan peringatan tentang tidak masuk keduanya terdengar bagus bagi saya.

kami mengalami ini dengan paket publik juga. npm unpublish @scope/package<strong i="5">@version</strong> --verbose menunjukkan 404, tetapi jika tidak, batalkan penerbitan tampaknya berhasil

Saya memiliki masalah yang sama, tidak dapat deprecate paket saya. Saya berasumsi itu ada hubungannya dengan paket yang dicakup , karena saya perhatikan bahwa garis miring di nama paket ditampilkan sebagai %2f di URL, tetapi saya benar-benar tidak mengerti apa yang terjadi.

$ node -v
v14.15.0
$ npm -v
6.14.8
$ npm deprecate @alling/foo-bar "This package should not be used."
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://registry.npmjs.org/@alling%2ffoo-bar - Not found
npm ERR! 404 
npm ERR! 404  '@alling/foo-bar<strong i="9">@latest</strong>' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

@SimonAlling Apa yang terjadi dengan npm v7.0.11?

@SimonAlling Apa yang terjadi dengan npm v7.0.11?

$ docker run -it node bash
# npm -v
7.0.8
# npm login
Logged in as alling on https://registry.npmjs.org/.
npm notice 
npm notice New patch version of npm available! 7.0.8 -> 7.0.11
npm notice Changelog: https://github.com/npm/cli/releases/tag/v7.0.11
npm notice Run npm install -g [email protected] to update!
npm notice 
# npm deprecate nonexisting-package-asdfasdf LOL
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/nonexisting-package-asdfasdf?write=true
npm ERR! 404 
npm ERR! 404  'nonexisting-package-asdfasdf<strong i="8">@latest</strong>' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
# npm deprecate @alling/foo-bar "This package should not be used."

Tidak ada kesalahan atau keluaran lainnya, tetapi tidak ada pesan penghentian yang muncul di halaman paket (yaitu https://www.npmjs.com/package/@alling/foo-bar), bahkan setelah setengah jam, jadi saya mencoba menjalankan perintah lagi:

# npm deprecate @alling/foo-bar "This package should not be used."
npm ERR! code E422
npm ERR! 422 Unprocessable Entity - PUT https://registry.npmjs.org/@alling%2ffoo-bar - Unprocessable Entity

Namun, jika saya membuka versi paket tertentu (mis. Https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6), saya melihat pesan penghentian yang diharapkan *. Tapi saya ingin itu muncul di halaman paket utama juga (seperti misalnya urix ).

* Versi terbaru: paket _this telah deprecated_. Versi lain: versi _this telah deprecated_.

EDIT: Pesan penghentian akhirnya muncul di halaman paket utama.

Itu menggunakan npm v7.0.8; dapatkah Anda npm install -g npm@7 sebelum menjalankan perintah deprecate?

Pesan penghentian akhirnya muncul di halaman paket utama, jadi saya yakin ini berfungsi dengan npm v7.0.8. : sedikit_muka_senyum:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat