KRİTİK HATA ANALİZİ

Müzik Çalar Console Hata Raporu

player-core.js hata analizi ve çözüm önerileri

Hata Özeti

1
Kritik JavaScript Hatası
null pointer error
3
API Endpoint 404
track-end route eksik
50+
Cleanup Log Spam
aşırı temizlik mesajı

📝 Basit Anlatım (Herkes İçin)

Problem 1: Müzik Çalar Kırılıyor

Önceki/sonraki şarkı butonlarına basıldığında bazen müzik çalmıyor ve hata veriyor. Sanki çalar bir anda "kendini unutuyor" ve müzik dosyasını nasıl yükleyeceğini bilmiyor hale geliyor.

Hata Mesajı:
Cannot read properties of null (reading 'loadSource')

Neden önemli? Kullanıcı şarkı değiştirmeye çalışınca müzik durur, sayfa yenilenmeden tekrar çalmaz.

Problem 2: Sunucuda Eksik Adres

Müzik bittiğinde sistem sunucuya "bu şarkı bitti" diye bilgi göndermek istiyor, ama sunucuda bu bilgiyi alacak adres yok. Sanki bir mektup göndermek istiyorsun ama adres yanlış.

Eksik Adresler:
❌ /api/muzibu/songs/24183/track-end
❌ /api/muzibu/songs/24944/track-end
❌ /api/muzibu/songs/34656/track-end

Neden önemli? Dinleme istatistikleri kaydedilmiyor olabilir (kaç kere dinlendi, ne kadar süre dinlendi gibi).

Problem 3: Gereksiz Temizlik Mesajları

Sistem sürekli "temizlik yapıyorum" diye log (kayıt) yazıyor. Normal kullanımda bu kadar çok temizlik mesajı olmamalı. Sanki bir temizlik robotu devamlı "siliyorum, siliyorum" diye bağırıyor.

🧹 Pool audio element temizlendi (50+ kez)
🧹 ÇÖZÜM A: playHlsStream başında diğer audio temizlendi
🧹 MADDE 6 v2: Preload geçişi sonrası garanti cleanup

Neden önemli? Console'u gereksiz mesajlarla doldurarak gerçek hataları görmemizi zorlaştırıyor. Ayrıca belki gereksiz temizlik yapılıyor olabilir.

🔧 Teknik Detaylar (Geliştiriciler İçin)

1. TypeError: Cannot read properties of null

Stack Trace:
loadAndPlaySong error: TypeError: Cannot read properties of null (reading 'loadSource') at Proxy.playHlsStream (player-core.js?v=1771547356:4711:26) at async Proxy.loadAndPlaySong (player-core.js?v=1771547356:4360:21) at async Proxy.playSongFromQueue (player-core.js?v=1771547356:4228:17) at async Proxy.previousTrack (player-core.js?v=1771547356:1624:17)
Hata Konumu:
player-core.js:4711 - playHlsStream() fonksiyonu
Sebep:
HLS instance (this.hlsInstances[key]) null oluyor. .loadSource() fonksiyonu çağrılmaya çalışılırken nesne bulunamıyor.
Tetikleyici Aksiyon:
previousTrack() fonksiyonu çağrısı → playSongFromQueue()loadAndPlaySong()playHlsStream()
🔍 Analiz:
  • Audio pool'daki cleanup işlemleri HLS instance'ı null yapıyor olabilir
  • ÇÖZÜM A ve MADDE 6 v2 cleanup'ları çok agresif
  • Race condition: Cleanup ve loadSource eş zamanlı çalışıyor
  • previousTrack() çağrısı sırasında instance henüz hazır değil

2. API Endpoint 404 Errors

Eksik Route'lar:
❌ POST /api/muzibu/songs/24183/track-end (404)
❌ POST /api/muzibu/songs/24944/track-end (404)
❌ POST /api/muzibu/songs/34656/track-end (404)
Çağıran Fonksiyon:
player-core.js:5915 - trackSongEnd()
Tetikleyici:
previousTrack() ve nextTrack() fonksiyonlarında trackSongEnd() çağrısı yapılıyor (satır 1619, 1669)
🔍 Analiz:
  • Backend'de /api/muzibu/songs/{id}/track-end route'u tanımlı değil
  • Şarkı bitişi istatistikleri kaydedilemiyor
  • Frontend bu endpoint'e veri gönderiyor ama backend karşılamıyor
  • Muhtemelen play tracking sistemi eksik

3. Console Log Spam (50+ mesaj)

Tekrar Eden Mesajlar:
🧹 Pool audio element temizlendi (DOM'da kalıyor): hlsAudio
🧹 Pool audio element temizlendi (DOM'da kalıyor): hlsAudioNext
🧹 ÇÖZÜM A: playHlsStream başında diğer audio temizlendi
🧹 MADDE 6 v2: Preload geçişi sonrası garanti cleanup
🧹 Kullanılmayan preload audio DOM'dan kaldırıldı
🔍 Analiz:
  • Her şarkı değişikliğinde 10+ cleanup log mesajı basılıyor
  • Console'u gereksiz mesajlarla kirletiyor, debug zorlaşıyor
  • Muhtemelen development ortamı için bırakılmış debug log'lar
  • Production'da bu log'lar kapatılmalı veya azaltılmalı
İlgili Fonksiyonlar:
  • cleanupAudioElement() - Pool cleanup
  • playHlsStream() - ÇÖZÜM A cleanup
  • preloadNextSong() - MADDE 6 v2 cleanup

Diğer Hatalar (Düşük Öncelik)

Facebook SDK Block:
connect.facebook.net/en_US/fbevents.js - ERR_BLOCKED_BY_CLIENT

AdBlock veya tarayıcı uzantısı Facebook tracking scriptini engelliyor. Normal davranış, sorun değil.

Sandboxed Script:
Blocked script execution in 'about:blank'

Güvenlik kısıtlaması, sandboxed iframe'de script çalışamıyor. Önemli değil.

Çözüm Önerileri

🔴 Öncelik 1: Null Pointer Hatası

player-core.js:4711 - playHlsStream() fonksiyonunda null check ekle:
if (!this.hlsInstances[key]) {
  console.error('HLS instance null, yeniden oluşturuluyor...');
  // Instance'ı yeniden oluştur
}
Cleanup fonksiyonlarını gözden geçir, HLS instance'ı erken silmeyi önle
Race condition için mutex/lock mekanizması ekle

🟠 Öncelik 2: API Route Eksik

Backend'de POST /api/muzibu/songs/{id}/track-end route'u ekle
Controller'da dinleme istatistiği kaydetme mantığı yaz (play count, listen duration vs.)
Frontend'de 404 hatası alınınca sessizce geç (hata fırlatma), console.warn ile uyar

🟡 Öncelik 3: Console Log Temizliği

Production'da cleanup log'larını kapat veya console.debug seviyesine al
Development ortamı için log seviyesi ayarı ekle (örn: window.DEBUG_PLAYER = true)
Sadece kritik hataları ve önemli olayları logla

İlgili Dosyalar

player-core.js
Satır 4711, 4360, 4228, 1624, 1669, 5915
Backend API Routes
Modules/Music/Routes/api.php (muhtemelen)
20 Şubat 2026 • Muzibu.com.tr