Axios の 1.2.0 バージョンでは、多くの人がZ_BUF_ERROR
バグに遭遇しました。
Content-Encoding
リクエストヘッダーが設定されているが、返されるコンテンツが空の場合(204 リクエスト、HEAD リクエスト、またはリダイレクトリクエストなど)、Axios は依然としてzlib
のBrotliDecoder
を呼び出して 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 を見ていると、かなり無礼な発言が多く見られました。一種の「バグを書いたらすぐに更新してリリースしろ」という感じですが、不満は不満でも、オープンソースコミュニティのメンテナーとユーザーの間には、もう少し理解と寛容さがあってほしいと思います。