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