261 文字
1 分

Q. npm publishで429 Too Many Request エラーが返ってくる

2023-08-29

相談を受けたが、当時の Node.js のバージョンや npm のバージョンが不明であったため、特に問題のある操作をしていない前提で調査を行った。ただし恐らく既に EOL になっていた Node.js v14 を利用していたと思われる。

調査結果#

少なくとも npm v6(Node.js v14)では、アクセストークンが間違っていた場合やログインに失敗した場合、npm publish は 429 エラーを返すことが分かった。

以前、npm は Referer ヘッダーを使用して特定のリクエストの原因になったコマンドを示す特別な値を送信していたが、 Cloudflare などのプロキシサーバーが HTTP ヘッダーの特殊な仕様を悪意あるリクエストとして見做すようになり、429 エラーが返されるようになったという経緯があるようだ。

https://github.com/npm/cli/issues/836#issuecomment-589404272

これは、Referer ヘッダーを使用しなくなった npm-registry-fetch ≥ 8.0.0 を使用する npm ≥ 7.0.0(Node.js ≥ v15)では発生しなくなっている。

https://github.com/npm/npm-registry-fetch/commit/ebddbe78a5f67118c1f7af2e02c8a22bcaf9e850

Q. npm publishで429 Too Many Request エラーが返ってくる
https://blog.ohirunewani.com/posts/npm-publish-429-too-many-request/
作者
hrdtbs
公開日
2023-08-29
ライセンス
CC BY-NC-SA 4.0