Error: incorrect header check
が発生していた。
パケットを見るとデータの取得は出来ているようだったが、スタックトレースを見ると、以下のようなログが出ていた。
11:59:05.119 background.ts:298 Error: incorrect header check at Zlib._handle.onerror (index.js:352) at Zlib._error (binding.js:283) at Zlib._checkError (binding.js:254) at Zlib._after (binding.js:262) at eval (binding.js:126) at eval (process.js:5)GitHub 側にも報告有り。
Error: data error: incorrect header check · Issue #520 · ttezel/twit · GitHub
https://github.com/ttezel/twit/issues/520
想像だが、11月から Twitter APIが乗っているサーバが変わったとかで、gzip 圧縮の仕様が変わり、 Accept-Encoding: gzip を付けてAPIをリクエストした場合、返された gzip データを解凍できなくなり発生しているんだと思う。gzip 圧縮を許可させなければいいので、twit のソースを変更することで、対処できそう。
本当は pull request 出せればいいんですが、issue 見ても動きが無いし、プロジェクトはもう動いて無い感じ・・・。
そして twit よりよさげな Twitter API クライアントも無い。
なので、twit にモンキーパッチを当てて回避する。
モンキーパッチで対処するため、パラメタで On/Off とかも考えず、とりあえず gzip 圧縮を無効にする。 まず、twit にパッチを当てたいので、patch-package を入れることにする。
$ yarn add -D patch-packagepackage.json の scripts に
"postinstall": "patch-package"
を追加
"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "build:report": "vue-cli-service build --report", "build:dev": "vue-cli-service build --mode development", "build-watch": "vue-cli-service build-watch", "build-watch:dev": "vue-cli-service build-watch --mode development", "postinstall": "patch-package" },twit の twitter.js の L208 をコメントアウト
twit/twitter.js at master · ttezel/twit · GitHub
https://github.com/ttezel/twit/blob/master/lib/twitter.js#L208
diff --git a/node_modules/twit/lib/twitter.js b/node_modules/twit/lib/twitter.js index 9540857..c6baae3 100644 --- a/node_modules/twit/lib/twitter.js +++ b/node_modules/twit/lib/twitter.js @@ -205,7 +205,7 @@ Twitter.prototype._buildReqOpts = function (method, path, params, isStreaming, c 'Accept': '*/*', 'User-Agent': 'twit-client' }, - gzip: true, + // gzip: true, encoding: null, }パッチ作成
$ npx patch-package twitパッチが効いているか試すため twit を入れなおす。
$ yarn remove twit $ yarn add -D twitこれで twitter.js の L208 がコメントアウトされていればOK。
あとは build して、
Error: incorrect header check
が発生しないことを確認する。
0 件のコメント:
コメントを投稿