İlk karakterin `<` olması genellikle JSON beklenen isteğe HTML döndüğünü gösterir. Yanlış endpoint, 404/500 hata sayfası, login yönlendirmesi, PHP warning, WAF challenge veya WISECP tema çıktısı response.json() tarafından JSON gibi ayrıştırılmaya çalışılmış olabilir.
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
Unexpected token < in JSON at position 0
JSON.parse: unexpected character at line 1 column 1İlk karakterin `<` olması genellikle JSON beklenen isteğe HTML döndüğünü gösterir. Yanlış endpoint, 404/500 hata sayfası, login yönlendirmesi, PHP warning, WAF challenge veya WISECP tema çıktısı response.json() tarafından JSON gibi ayrıştırılmaya çalışılmış olabilir.
Bir SyntaxError sonraki tüm scriptleri durdurabilir; önce Console’daki ilk kırmızı kaydı çözün.
Source map, pretty print ve Network URL ile hatanın kaynak mı build mi olduğunu belirleyin.
node --check, ESLint, TypeScript veya JSON doğrulayıcıyla sorunu küçük bir alana indirin.
PHP render, API body, CDN cache ve module loader sonucunu production cevabında kontrol edin.
JSON hatasını try/catch ile gizleyip HTML cevabı normal veri gibi kullanmayın.
Anlamı: Cevap JSON yerine HTML ile başlıyor.
Muhtemel neden: 404, 500, login veya tema sayfası.
Anlamı: Tam HTML belge JSON parser’a gönderildi.
Muhtemel neden: Yanlış endpoint veya yönlendirme.
Anlamı: PHP warning/parse error metni JSON’a karıştı.
Muhtemel neden: display_errors açık veya fatal error.
Anlamı: Access denied gibi metin cevabı döndü.
Muhtemel neden: Yetki, session veya CSRF sorunu.
Anlamı: Sunucu JSON yerine HTML content type gönderiyor.
Muhtemel neden: Route/handler yanlış.
Anlamı: API çağrısı giriş sayfasına yönlendi.
Muhtemel neden: Session süresi veya auth middleware.
Anlamı: WAF bot doğrulama sayfası döndü.
Muhtemel neden: Rate limit veya güvenlik kuralı.
Anlamı: Proxy custom error page üretiyor.
Muhtemel neden: Nginx/Apache upstream hatası.
Bu ifadeyle eşleşen kayıt bulunamadı.
curl -i https://example.com/api/dataHTTP status, Content-Type ve ham cevabı birlikte gösterir.
curl -sIL https://example.com/api/data | grep -iE '^HTTP|^location:|^content-type:'Login veya hata sayfasına yönlenmeyi gösterir.
curl -s https://example.com/api/data | python3 -m json.toolCevap geçerli JSON değilse ayrıştırma hatası verir.
curl -sL https://example.com/api/data | head -c 300Cevabın HTML, PHP hata metni veya JSON ile başlayıp başlamadığını gösterir.
tail -n 100 /var/log/php-fpm/error.log 2>/dev/null || tail -n 100 /var/log/php8.3-fpm.logAPI çağrısı sırasında oluşan PHP hatalarını gösterir.
fetch('/api/data').then(async r => ({status:r.status,type:r.headers.get('content-type'),url:r.url,body:await r.text()})).then(console.log)Parse etmeden önce status, content type, final URL ve body’yi gösterir.
const veri = await response.json();const metin = await response.text();
if (!response.ok) throw new Error(`${response.status}: ${metin.slice(0,200)}`);
const veri = JSON.parse(metin);echo json_encode($veri);header('Content-Type: application/json; charset=utf-8');
echo json_encode($veri, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);http_response_code(500);
echo '<h1>Hata</h1>';http_response_code(500);
header('Content-Type: application/json; charset=utf-8');
echo json_encode(['success'=>false,'error'=>'Sunucu hatası']);fetch('/api/profile')fetch('/api/profile', { credentials: 'same-origin', headers: { Accept: 'application/json' } })Chrome DevTools Console, Sources ve Network panelleriyle gerçek dosya, satır ve sunucu cevabı birlikte incelenmelidir.
Node sürümü, package.json module tipi, derleme çıktısı ve çalıştırılan gerçek dosya aynı module sistemine uygun olmalıdır.
PHP uyarıları, tema HTML’i, yönlendirme ve çift script yükleme JavaScript hatası gibi görünebilir.
JavaScript parser, JSON parser veya module loader beklenen sözdizimini bulamadığında oluşur. Hata mesajı gerçek nedenin bulunduğu satırdan sonraki token’ı işaretleyebilir.
Satır çoğu zaman parser’ın hatayı fark ettiği yerdir. Eksik tırnak, parantez veya virgül bir önceki satırda olabilir.
Source map ve DevTools pretty print kullanın; asıl kaynak dosyayı düzeltip yeniden build alın.
PHP warning, HTML hata sayfası veya kaçış yapılmadan basılan veri JavaScript/JSON sözdizimini bozabilir.
Çoğu parser hatasını bulur; ancak yanlış sunucu cevabı, çift script yükleme ve runtime module yapılandırması ayrıca incelenmelidir.
Deploy, minify, cache, paket güncellemesi, Node sürümü, PHP çıktısı veya yarım yüklenen dosya davranışı değiştirmiş olabilir.
Rehber teşhis ve güvenli düzeltme adımları sunar; değişiklikler staging ortamında test edilip Git ile geri alınabilir tutulmalıdır.
Console, Fetch/AJAX, PHP JSON cevapları, ES Modules, TypeScript build ve WISECP script yükleme sorunlarını üretim yapısını bozmadan inceliyoruz.