Cli: [バグ] npm unpublishはエラー404を返し、詳細なログレベルが使用されない限りエラーは出力されません

作成日 2020年06月29日  ·  14コメント  ·  ソース: npm/cli

何/なぜ

npm unpublishは機能せず、レジストリがコード404で応答しても、エラーは表示されません。

いつ

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

どこ

npmパブリックレジストリ

どうやって

現在の動作

コマンドラインは印刷するだけです

サーバーがエラー404で応答している間。

また、エンドポイントhttps://registry.npmjs.org/@siliceum%2fcalcite-cliは情報を返しますが、 ?write=truehttps://registry.npmjs.org/@siliceum%2fcalcite-cli?write=true )のバージョンはエラー404 notfoundを返します。

再現する手順

npm unpublish @siliceum/[email protected]

予想される行動

パッケージが未公開であるか、エラーが出力されます。 (最終的には、404以外のもの)。
詳細なログレベルを使用すると、次の出力を得ることができます。

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

npm infookで終わる場合は機能しました
npm動詞cli [
npm verb cli'C:\ Program Files \ nodejs \ node.exe '、
npm verb cli'C:\ Program Files \ nodejs \ node_modules \ npm \ bin \ npm-cli.js '、
npm動詞cli'unpublish '、
npm動詞cli '@ siliceum / [email protected] '、
npm動詞cli '-loglevel'、
npm動詞cli '動詞'
npm動詞cli]
[email protected]を使用したnpm情報
[email protected]を使用したnpm情報
npm動詞npm-セッションe43c8f8257e968e5
npm http fetch GET 404 https://registry.npmjs.org/@siliceum%2fcalcite-cli?write = true 492ms

  • @ siliceum / [email protected]
    npm動詞exit [0、true]
    npmタイミングnpm1157msで完了
    npm info ok
Bug

最も参考になるコメント

おっと! 気にしないでください。ログアウトして再度ログインしたところ、両方の機能が機能しました。奇妙なことに、混乱してすみません。

全てのコメント14件

npm unpublishnpm 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.
...

npm deprecate実行しているときに同じ問題が発生します-404 NotFoundが返されます。 原因は、私が正しく認証されなかったためです( npm adduserそれを分類しました)-しかし、NotFound出力は接線であなたを導きます。 サーバーAPIが別のステータスコード(401など)を返す可能性がない場合でも、ログインを示唆するこれらのコマンドからの出力があればよいでしょう。 出力は一般的で常に表示されるか(「ログインしていることを確認してください!」)、authTokenが存在しない場合に表示される可能性があります。

しかし、私はログインしています! これは、パッケージの所有者として新しいバージョンを公開したのとまったく同じターミナルセッションです。

おっと! 気にしないでください。ログアウトして再度ログインしたところ、両方の機能が機能しました。奇妙なことに、混乱してすみません。

@luawtfああ、その場合、これは私のものと同じ状況のようです-実際の問題が認証関連である場合、これらのコマンドは404

うん! より一般的で冗長なエラーが大きいことに同意します。
また、401 Unauthorizedの方が理にかなっているのに、レジストリが404を返すのはなぜですか?それも修正する必要がありますか?

同意しました。 すでに公開されているパッケージでは奇妙に思えます。この場合、401ではなく404を返すことで、セキュリティ面で得られるものは何もありません。 パッケージがプライベートである場合は、そのURLに何も存在しないという事実を漏らさないように、ログアウト時にプライベートリポジトリにアクセスしようとすると、GitHubが404を表示するのと同じように意味があります。

ログインしていないことが問題であることが確認できます。
401を返すか、ログインしていないことを警告するメッセージを表示することは、どちらも私には良いことです。

パブリックパッケージでもこれに遭遇しました。 npm unpublish @scope/package<strong i="5">@version</strong> --verboseは404を示していますが、それ以外の場合、非公開は成功しているようです

私も同じ問題を抱えており、私のパッケージをdeprecateできません。 パッケージ名のスラッシュがURLに%2fと表示されていることに気付いたので、スコープされているパッケージと関係があると思いましたが、何が起こっているのか本当にわかりません。

$ 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 npm

@SimonAlling npm

$ 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."

エラーやその他の出力はありませんが、30分ほど経ってもパッケージページ(https://www.npmjs.com/package/@alling/foo-bar)に非推奨メッセージが表示されなかったので、もう一度コマンド:

# 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

ただし、パッケージの特定のバージョン(https://www.npmjs.com/package/@alling/foo-bar/v/1.1.6など)にアクセスすると、予期される非推奨メッセージ*が表示されます。 ただし、メインパッケージページにも表示したい(例: urix )。

*最新バージョン:_このパッケージは非推奨になりました_。 その他のバージョン:_このバージョンは非推奨になりました_。

編集:非推奨のメッセージが最終的にメインパッケージページに表示されました。

それはnpmv7.0.8を使用しています。 deprecateコマンドを実行する前にnpm install -g npm@7できますか?

非推奨のメッセージが最終的にメインパッケージページに表示されたので、npmv7.0.8で動作すると思います。 :slightly_smiling_face:

このページは役に立ちましたか?
0 / 5 - 0 評価