Viki

Viki 写东西的地方

努力上进且优秀
github
email
x
steam
bilibili
douban

Axiosの`Z_BUF_ERROR`バグの記録

Axios の 1.2.0 バージョンでは、多くの人がZ_BUF_ERRORバグに遭遇しました。

Content-Encodingリクエストヘッダーが設定されているが、返されるコンテンツが空の場合(204 リクエスト、HEAD リクエスト、またはリダイレクトリクエストなど)、Axios は依然としてzlibBrotliDecoderを呼び出して Brotli の解凍を行います。これにより、zlibがエラーを発生させることがあります。このissueを参照してください。

その後、開発者はこの問題を修正し、同時にレスポンスヘッダーにContent-Lengthがない場合も修正しました。

何らかの理由で、Axios のコア開発者はリリースに敏感です(このコメントとこのissueを参照してください)。コミュニティの繰り返しの期待に応えて、1.2.1 もついにリリースされました。

しかし、喜びもつかの間、1.2.1 バージョンでもZ_BUF_ERRORの問題が再発しました。いくつかの issue を調べた結果、エラーの原因が特定されました:前回の「レスポンスヘッダーにContent-Lengthがない場合」のコミットで、Brotli の解凍を引き起こすバグが発生しました。サーバーが返すデータの圧縮形式が br の場合、Z_BUF_ERRORエラーが発生します。一時的な解決策として、リクエストヘッダーでサーバーが返すエンコーディング形式を指定し、br を返さないようにすることができます。以下のようになります。

axios.get(someApi, {
  headers: { 'Accept-Encoding': 'gzip,deflate,compress' }
})

この問題は修正されましたが、まだリリースされていません =.=、なぜリリースされていないのかについては、先ほど触れました。まだリリースされていませんが、昨日(2022/12/24、ちょうどクリスマスイブ)にリリースのPRが提出されたのを見ましたので、早くリリースされることを願っています。前回のリリースから 3 週間も経っているので、このような有名なライブラリの最新バージョンには長い間壊れたバグが存在すると、問題がますます増えやすく、影響範囲が非常に広いと正直に言ってしまいます。

issue を見ていると、かなり無礼な発言が多く見られました。一種の「バグを書いたらすぐに更新してリリースしろ」という感じですが、不満は不満でも、オープンソースコミュニティのメンテナーとユーザーの間には、もう少し理解と寛容さがあってほしいと思います。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。