UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【JavaScript】fetchAPIのres.json()でエラーが発生する

fetchAPIを使っていて、以下のエラーが出た

TypeError: body used already for: https://my-app/remove-favorite

調べたところ、レスポンスを.json()JSONオブジェクトとして解析していたが、Content-Typejsonでないことが原因だった

github.com

レスポンスがJSONオブジェクトでない場合は、.text()にして変換したところエラーが解消された

今後はレスポンスのContent-Typeを確認すべきだが、確証がない場合は以下のようにしておくのが良いかも

res = await fetch(url)
if (res.headers.get('content-type').includes('json')) {
  await res.json()
} else {
  await res.text()
}