Hiba leírása:
Ez a hiba akkor fordul elő, amikor JavaScript kódunk JSON-ként próbál értelmezni egy választ, amely valójában nem JSON – hanem például HTML.
Uncaught SyntaxError: Unexpected token < in JSON at position 0
A < karakter gyakran egy HTML válasz első karaktere (pl. <html>), így ha a válasz HTML, a JSON.parse() vagy response.json() elhasal.
💥 Tipikus hibás kód
fetch('/api/data')
.then(response => response.json()) // ❌ Unexpected token < in JSON
.then(data => console.log(data));
Ha a szerver valójában hibát (pl. 404, 500) vagy HTML-t küld vissza, ez a hiba történik.
—✅ Megoldás
- Válasz típusának ellenőrzése:
fetch('/api/data') .then(response => { const type = response.headers.get('content-type'); if (type && type.includes('application/json')) { return response.json(); } else { throw new Error('Nem JSON választ kaptunk'); } }) .then(data => console.log(data)) .catch(err => console.error(err)); - Nyers válasz loggolása:
fetch('/api/data') .then(response => response.text()) .then(text => { try { const data = JSON.parse(text); console.log(data); } catch (err) { console.error('Hiba a JSON értelmezés során:', text); } });
🧠 Miért történik ez?
Ez a hiba nem JavaScript szintaktikai probléma, hanem az API válaszának típusa nem egyezik azzal, amit a kód elvár.
Gyakori okok:
- API endpoint nem létezik vagy hibát dob (404, 500)
- Az API HTML válaszoldalt küld vissza
- A válasz content-type nem JSON
🧪 Tipp fejlesztőknek
- Nézd meg a hálózati választ a böngésző „Network” tabján
- Logolj minden választ
response.text()-tel először - Használj proxy szervert fejlesztéshez, hogy elkerüld a CORS hibákat
🧯 Összefoglalás
Ez a hiba könnyen megelőzhető, ha minden fetch válasz előtt ellenőrizzük a tartalom típusát, és nem feltételezzük automatikusan, hogy JSON-t kapunk. A robustus frontend kód elengedhetetlen eleme a megfelelő hibakezelés API hívások esetén is.
