Web Uygulamanızda Boş Beyaz Sayfa Nasıl Düzeltilir
Boş beyaz bir sayfa neredeyse her zaman iki şeyden birini anlatır: uygulamanın JavaScript’i hiçbir şey çizmeden önce çökmüştür ya da JavaScript hiç yüklenmemiştir. Tarayıcı konsolunu açın (sağ tık → İncele → Konsol) ve ilk kırmızı hatayı okuyun, sonra yüklenemeyen dosyalar için Ağ sekmesine bakın. Çoğu neden eksik bir ortam değişkeni, yanlış bir temel yol, bitmemiş bir derleme ya da tek bir bileşendeki bir çökmedir.
Bu rehber, React, Vue ya da benzeri çatılarla yapılmış tek sayfalık uygulamaları kapsar (yapay zeka oluşturucularının yaptıklarını da dahil), boş sayfaların en sık görüldüğü yer burasıdır.
Sayfa neden beyaz
Modern bir tek sayfalık uygulama (SPA) tarayıcıya neredeyse boş bir HTML dosyası gönderir, kabaca şöyle:
<body>
<div id="root"></div>
<script type="module" src="/assets/index-a1b2c3.js"></script>
</body>
Sonra JavaScript, tüm sayfayı o boş div’in içinde oluşturur. Betik yüklenemezse ya da render edilmeden önce bir hata verirse, div boş kalır ve beyaz görürsünüz. Sayfa görünür bir şekilde “bozuk” değildir; sadece hiç çizilmemiştir.
Bu yüzden düzeltme her zaman sayfanın kendisinde değil, geliştirici araçlarında başlar.
Adım 1: Konsolu okuyun
Geliştirici araçlarını açın: sayfaya sağ tıklayıp İncele seçin ya da F12’ye basın (Mac’te Cmd+Option+I). Konsol sekmesine gidin ve sayfayı yeniden yükleyin.
İlk kırmızı hataya bakın; sonrakiler çoğu zaman yan etkidir. Ne dediği nedene işaret eder:
| Konsol mesajı (tipik ifade) | Ne anlama gelir | Gidilecek adım |
|---|---|---|
Cannot read properties of undefined (reading '...') | Kod, orada olmayan bir veri bekledi | Adım 4 |
... is not defined / ... is not a function | Eksik bir import, değişken ya da ayar | Adım 4 ya da Adım 3 |
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html" | Bir betiğin URL’si JavaScript yerine bir HTML sayfası döndürdü | Adım 2 |
Uncaught SyntaxError: Unexpected token '<' | Aynı şey: JavaScript beklenirken HTML geldi | Adım 2 |
supabaseUrl is required, Missing API key ya da benzeri | Bir ortam değişkeni boş | Adım 3 |
Access to fetch ... has been blocked by CORS policy | Başka bir alan adına yapılan istek engellendi | Bkz. CORS hatalarını düzeltme |
| Hiç hata yok | Render çalıştı ama hiçbir şey göstermiyor ya da CSS gizliyor | Adım 6 |
Dosya adı ve satır numarası dahil tam hata metnini kopyalayın. Bir yapay zeka oluşturucu kullanıyorsanız, doğrudan sohbete yapıştırın.
Adım 2: Dosyaların yüklendiğini kontrol edin
Ağ sekmesini açın, Önbelleği devre dışı bırak kutusunu işaretleyin ve yeniden yükleyin. .js ve .css dosyalarına yapılan isteklere bakın.
- Bir JavaScript dosyasında 404 durumu: sayfa sunucuda olmayan bir dosya istiyor.
- 200 durumu ama tür
text/html: sunucu betik yerine bir sayfa döndürmüş (çoğu zaman SPA yedeği yüzündenindex.htmlkendisi). Kök neden aynı: dosya, sayfanın beklediği yerde değil.
Sık nedenler:
Yanlış temel yol. Uygulama example.com/app/ gibi bir alt klasörden sunuluyorsa, ama /assets/... konumundan dosya yükleyecek şekilde derlendiyse, her betik isteği ıska geçer. Vite’ta bu, vite.config içindeki base seçeneğidir; Create React App’te homepage alanıdır; Next.js’te basePath’tir. Uygulamanın gerçekte sunulduğu yerle eşleşmelidir.
Eski index.html. Derleme araçları dosyalara içerik özetine dayalı adlar verir, örneğin index-a1b2c3.js. Yeni bir dağıtımdan sonra eski dosya ortadan kalkar. Bir tarayıcı ya da CDN hâlâ eski index.html’i önbelleğinde tutuyorsa, eski dosyayı ister ve hiçbir şey alamaz. Sert yenileme (Cmd+Shift+R ya da Ctrl+Shift+R) bunu doğrular. Kalıcı çözüm, karma adlı dosyalar uzun süre önbelleğe alınırken index.html’i kısa ya da önbelleksiz bir başlıkla sunmaktır.
Derleme bitmedi ya da dağıtılmadı. Derleme başarısız olduysa, sunucu eski ya da boş bir çıktı klasörünü sunuyor olabilir. Derleme günlüğünde hataları kontrol edin.
Yanlış klasör yayınlanmış. Sunucu, projenin kaynak klasörünü değil derleme çıktısını (genellikle dist ya da build) sunmalıdır. Kaynağı sunmak, /src/main.tsx adresine işaret eden bir index.html verir ve tarayıcılar bunu çalıştıramaz.
Adım 3: Ortam değişkenlerini kontrol edin
Ön yüz uygulamaları genellikle bir API URL’si ya da herkese açık bir anahtar gibi ayarları derleme zamanında okur. Canlı derlemede bir değişken eksikse, createClient(undefined, undefined) gibi bir kod hemen hata verir ve sayfa beyaza döner.
Bilmeniz gerekenler:
- Vite’ta tarayıcı kodunda yalnızca
VITE_ön ekli değişkenler kullanılabilir veimport.meta.env.VITE_NAMEolarak okunur. Create React App’te buREACT_APP_, Next.js’teNEXT_PUBLIC_’tir. - Bu değerler uygulama derlendiğinde içine gömülür. Derlemeden sonra eklenen bir değişken, yeniden derleyip yeniden dağıtana kadar hiçbir şey yapmaz.
- Önizlemenin ya da yerel makinenizin, üretim derlemesinde olmayan bir
.envdosyası olabilir. Aynı değişkenleri sunucuda da ayarlayın. - Bu önekleri taşıyan her şey herkese açık JavaScript’e girer. Oraya yalnızca herkese açık değerler koyun, asla gizli anahtarları değil.
Hızlı bir test: konsol hatasında bir ayar adının yanında undefined arayın ya da şunu isteyin:
Yayınlanmış uygulama boş bir sayfa gösteriyor. Ön yüzün okuduğu her ortam değişkenini listele, canlı derlemede hangilerinin eksik ya da boş olduğunu kontrol et ve biri eksikse boş sayfa yerine uygulamanın açık bir hata mesajı göstermesini sağla.
Adım 4: Çökmeyi düzeltin
Konsolda normal bir JavaScript hatası görünüyorsa, kod render sırasında çökmüştür. Yapay zeka ile yapılmış uygulamalarda tipik nedenler:
- Veri henüz yüklenmedi. Bir bileşen,
usergelmeden önceuser.nameokur. Düzeltme bir yükleme durumu ya da isteğe bağlı zincirleme (user?.name) eklemektir. - Boş veri. Yeni bir hesabın kaydı yoktur, ama kod listede en az bir öğe olduğunu varsayar.
- Beklenmeyen veri yapısı. Bir API, kodun beklediği listeyi değil bir hata nesnesi döndürmüştür.
- Eksik bir import, bir dosya yeniden adlandırıldıktan ya da taşındıktan sonra.
- Sunucu tarafı render sırasında yalnızca tarayıcıda bulunan bir API kullanmak, örneğin bir Next.js sunucu bileşeninde
windowya dalocalStorage.
Yapay zekaya tam hatayı, sayfayı ve hangi hesapla giriş yaptığınızı verin:
Dashboard sayfası yeni kullanıcılar için boş. Konsol:
ProjectList.tsx:18konumundaTypeError: Cannot read properties of undefined (reading 'map'). Projeleri olan hesabımda çalışıyor. Boş bir hesapta “Henüz proje yok” gösterecek şekilde düzelt ve önizlemede yeni bir hesabı kontrol et.
Adım 5: Bir hata sınırı ekleyin
React’te tek bir çöken bileşen tüm uygulamayı kaldırabilir; bu yüzden küçük bir hata tamamen boş bir sayfa üretir. Bir hata sınırı, altındaki render hatalarını yakalayan ve bunun yerine yedek bir ekran gösteren bir bileşendir.
Ana rotaların etrafına, “Bir şeyler ters gitti” mesajını ve bir Yeniden Yükle düğmesini gösteren, hatayı konsola da yazan bir hata sınırı ekle. Üst bilgi ve gezinme dışarıda kalsın ki yine görünsün.
Bu hatayı düzeltmez, ama ziyaretçiler boş ekran yerine bir mesaj görür ve sizin de nerede kırıldığını görmenizi sağlar.
Adım 6: Hata yok, ama hâlâ boş
Konsol temizse ve betikler yükleniyorsa:
- Elements sekmesine bakın.
<div id="root">içinde içerik var mı? Varsa render ediliyor ama görünmüyordur: beyaz üzerine beyaz metin,opacity: 0,display: noneya da onu kaplayan tam ekran bir öğe. - Yönlendiriciyi kontrol edin. Geçerli URL’ye uyan bir rota yoksa ve “bulunamadı” rotası yoksa, bazı yönlendiriciler hiçbir şey render etmez. 404 sayfası gösteren bir yakalayıcı rota ekleyin.
- Bağlama noktasını kontrol edin. Kod, var olan bir öğeye bağlanmalıdır.
index.htmlid="app"içeriyor ama kodrootarıyorsa, hiçbir şey görünmez (ve React genellikle bir hata kaydeder). - Bir tarayıcı eklentisini kontrol edin. Gizli bir pencere deneyin. Reklam engelleyiciler,
analyticsya daadsgibi adları olan betikleri bazen engeller.
Yalnızca bir sayfayı yeniledikten sonra mı boş?
Ana sayfa çalışıyor ama /dashboard sayfasını yenilemek boş bir sayfa ya da 404 gösteriyorsa, sunucu uygulama rotaları için index.html göndermeyi bilmiyor demektir. Bu bir yönlendirme yedeği sorunudur ve yayından sonra 404 hatalarını düzeltme rehberinde ele alınır.
Sık yapılan hatalar
- İlk hatayı değil son hatayı okumak. İlk kırmızı satır genellikle nedendir.
- Derlemeden ortam değişkenlerini ayarlamak. Ön yüz değişkenleri derleme zamanında sabitlenir.
- Yalnızca kendi hesabınızla test etmek. Boş hesap çökmeleri, boş sayfaların en yaygın nedenlerinden biridir.
- Dağıtımın çalıştığını varsaymak. Kodu hata ayıklamadan önce derleme günlüğünü kontrol edin.
- Her şeyi tarayıcı önbelleğine yüklemek. Sert yenileme bunu saniyeler içinde eler; sayfa hâlâ boşsa sorun başkadır.
Mythex’te boş sayfalar
Önizleme boşsa, önce uygulamanın çalıştığını kontrol edin (Kod → terminal’i açın), sonra Mythex’ten doğru sunucuyu başlatmasını isteyin, önizleme araç çubuğunda Yenile’ye tıklayın ya da /fix kullanın. Yayınlanmış bir URL boşsa, dokümanlar bir dakika beklemeyi ve sert yenilemeyi, yayınlamadan önce ortam değişkenlerinin ve veritabanının kurulduğunu doğrulamayı ve barındırma kotanızı kontrol etmeyi önerir. Yayınlanmış uygulamanın bir anlık görüntü olduğunu unutmayın: bir şeyi düzelttikten sonra yeniden yayınlayın. Bir değişiklik soruna yol açtıysa, son iyi yanıttaki Bu noktaya geri dön seçeneği projeyi geri alır. Dokümanlardaki Sorun giderme ve Yayın sorun giderme bölümlerine, ayrıca yapay zekayla yapılmış bir uygulamada hata ayıklama genel rehberimize bakın.
Boş sayfa kontrol listesi
- Konsoldaki ilk kırmızı hatayı okudum
- Ağ sekmesinde 404 veren ya da HTML döndüren
.js/.cssdosyalarını kontrol ettim - Temel yol, uygulamanın sunulduğu yerle eşleşiyor
- Derleme bitti ve yayınlanan klasör derleme çıktısı
- Tüm ön yüz ortam değişkenleri canlı derlemede ayarlandı, sonra yeniden derlendi
- Boş ve yeni hesaplar dahil çökme düzeltildi
- Gelecekteki çökmelerin bir mesaj göstermesi için hata sınırı var
- Bilinmeyen URL’ler için yakalayıcı rota var
- Sert yenileme ve gizli pencere sonrası test edildi
Sorular
React uygulamam neden boş beyaz bir sayfa gösteriyor?
Genellikle JavaScript, hiçbir şey çizilmeden önce çöktüğü ya da JavaScript dosyasının hiç yüklenmediği için. Tarayıcı konsolunu açın: orada kırmızı bir hata, hangisi olduğunu ve hatanın oluştuğu dosyayı ve satırı size söyler.
Uygulamam yerelde çalışıyor ama yayından sonra neden boş bir sayfa gösteriyor?
En yaygın nedenler, canlı derleme için hiç ayarlanmamış ortam değişkenleri, JavaScript ve CSS dosyalarının yanlış yoldan istenmesi (temel yol uyuşmazlığı) ve artık var olmayan dosyalara işaret eden eski, önbelleğe alınmış bir index.html’dir.
“Failed to load module script” ne anlama geliyor?
Tarayıcı bir JavaScript dosyası istedi ama bunun yerine bir HTML sayfası geldi; genellikle sitenin index.html’i ya da bir hata sayfası. Dosyanın yolu yanlış ya da dosya sunucuda yok; bu yüzden derleme çıktısını ve uygulamanın temel yol ayarını kontrol edin.
Tek bir hatanın tüm sayfayı boşaltmasını nasıl önlerim?
Bir hata sınırı (error boundary) ekleyin. React’te hata sınırı, altındaki sayfa parçasında oluşan render hatalarını yakalayan ve her şeyi kaldırmak yerine yedek bir mesaj gösteren bir bileşendir.