← エラー辞典に戻る

JavaScript

SyntaxError: Unexpected token '<'

JSONの代わりにHTMLが返ってきた

こんな症状

fetchのレスポンスをJSON.parseしたら「Unexpected token '<'」と出る。APIのURL間違いで起きやすいよ。

まず試す

fetch のURLが正しいか確認し、json() の前に res.ok をチェックする。

js
const res = await fetch("/api/data");
if (!res.ok) throw new Error("API error");
const data = await res.json();

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • URLが間違っている(404のHTMLが返る)
    → fetch のURLを正しいものにする。
  • ログインページのHTMLが返る
    → 認証が必要なAPI。トークン等を付けてリクエストする。
  • レスポンスの中身が分からない
    → DevToolsのNetworkタブでレスポンス本文と Content-Type を確認する。

なぜ起きる?

APIのURLが間違っていて、HTMLページ(404ページやログインページなど)が返ってきているよ。JSON.parse()やresponse.json()はJSON文字列を期待しているのに、HTMLの<で始まる文字列が来るとパースに失敗するんだ。

✕ エラーが起きるコード
const data = await res.json();
// 404ページのHTMLが返っている
✓ 直したコード
const res = await fetch("/api/data");
if (!res.ok) throw new Error("API error");
const data = await res.json();

✅ 直ったか確認

res.ok が true で、json() がエラーなくデータを返せばOK。

🆘 まだ直らないときは

Content-Type が application/json になっているかサーバー側も確認しよう。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

JavaScriptコース(基礎から)で根本から理解する →

✏️ 手を動かして練習

練習ドリル一覧で実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 JavaScriptコースで基礎を学ぼう!

エラーの原因を根本から理解するには、基礎を体系的に学ぶのが近道です。完全無料・登録不要。

JavaScriptコースを始める →

❓ 関連するQ&A