Laravel “Vite manifest not found” Hatası ve Production Deployment Çözümü

Laravel ile Vite entegrasyonu, üretimde public/build dizininde bulunan manifest.json dosyasını temel alır. Bu kapsamlı rehber, üretim deployment süreçlerinde karşılaşılan “Vite manifest not found” hatasının kökenini hızlıca tespit etmenize ve kalıcı çözümler üretmenize odaklanır. Amacımız, hatayı tekrarlamadan güvenilir bir üretim akışını kurmak ve rollback sürecini sorunsuz işletmektir.

Köken Analizi
– Üretim build’i public/build altında manifest.json oluşturmuyorsa veya erişilemez durumdaysa hatayla karşılaşılır. Bu, CI/CD sırasında build adımı atlanması, çıktı dosyalarının yanlış konumlandırılması veya taşıma sırasında bozulması nedeniyle olabilir.
– @vite() çağrısı ile manifestteki entrypoint eşleşmiyorsa, Laravel uygulaması doğru varlıkları bulamaz ve manifest not found hatası tetiklenir.
– Sunucu izinleri veya dosya sistemi kilitleri nedeniyle manifest.json okunamıyorsa da bu hata görülebilir.
– Önbellek katmanları (OPcache, Laravel config/cache) eski manifest bilgilerini sunuyor olabilir.

Doğrulama Adımları
– Üretim ortamında manifest.json’un varlığını ve içeriğini kontrol edin:
– HTTP ile erişilebilir mi ve JSON formatında mı?
– manifest içinde app.js, app.css gibi entrypoint’ler mevcut mu?
– Origine build çıktısının public/build klasöründe olduğundan emin olun:
– public/build/ dizin içerikleri eksik mi?
– deploy scriptleri sırasında public/build temizlenip yeniden oluşturuluyor mu?
– Laravel tarafında @vite() çağrısının doğru entrypoint’lerle eşleştiğini doğrulayın:
– resources/js/app.js ve resources/css/app.css doğru şekilde referanslanıyor mu?
– Sunucu konfigürasyonunda public dizinin webroot olarak ayarlandığından emin olun. Yanlış kök dizin, manifest.json’e erişimi engeller.

Çözüm Akışı ve Adımlar
1) Üretim Build Sürecinin Sağlamlaştırılması
– Paket yöneticisi çıktılarının güvenilirliği için npm ci çalıştırılır ve temiz bir build üretilir.
– package.json üzerinde üretim odaklı build scriptleri net olmalı:
“`
{
“scripts”: {
“dev”: “vite”,
“build”: “vite build”,
“build:clean”: “rm -rf public/build && npm run build”
}
}
“`
– Üretim CI/CD pipeline’ında build adımını zorunlu kılın ve manifest.json’un public/build altında üretildiğini doğrulayın.

2) Laravel–Vite Entegrasyonunun Sağlamlığı
– config/vite.php ve publicDirectory ayarlarının doğru olduğundan emin olun. Örnek konfigürasyon:
“`
return [
‘publicDirectory’ => ‘public’,
‘devServer’ => [
‘host’ => ‘localhost’,
‘port’ => 5173,
],
];
“`
– Blade dosyalarında @vite(‘resources/js/app.js’) gibi ifadelerin manifest ile uyumlu olup olmadığını kontrol edin. İlgili entrypoint’ler manifest.json’da bulunmalıdır.
– Eğer mix yerine Vite kullanılıyorsa, Laravel lingkunganinin ihtiyaç duyduğu PHP paketlerinin güncel olduğundan emin olun (laravel/vite-plugin veya ilgili güncellemeler).

3) Sunucu Yapılandırması ve Erişim
– Public klasörün webroot olarak servis edildiğini teyit edin. Nginx örneği:
“`
server {
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /build/ {
allow all;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
“`
– Deploy sırasında public/build klasörünün kopyalanması veya taşınması esnasında kaybolmadığından emin olun. Dosya izinlerini 755/644 düzeyinde tutun.

4) Önbellek ve Zamanlayıcı Temizliği
– Üretimde OPcache veya PHP-FPM yeniden başlatması gerektiğinde manifest’in yeniden yüklenmesini garanti edin:
“`
sudo systemctl restart php-fpm
“`
– Laravel cache’lerini temizlemek önerilir:
“`
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
“`
– CDN/edge önbellekleri temizlenmeli; manifest değiştiğinde içerik dağıtım ağı yeni dosyalara yönlendirmeli.

5) Doğrulama ve Otomasyon
– Deployment sonrası manuel doğrulama:
– https://your-domain/build/manifest.json erişimi ve JSON validasyonu.
– Blade’da @vite çağrılarının doğru entrypoint’i işaret ettiğini kontrol edin.
– Otomatik doğrulama için basit bir manifest kontrol script’i ekleyin:
“`
// scripts/verify-manifest.js
const fs = require(‘fs’);
const manifestPath = ‘./public/build/manifest.json’;
const manifest = JSON.parse(fs.readFileSync(manifestPath, ‘utf8’));
if (!manifest[‘resources/js/app.js’]) {
throw new Error(‘app.js entry not found in manifest’);
}
console.log(‘Manifest doğrulandı:’, manifest[‘resources/js/app.js’].file);
“`
– Rollback planı olarak eski build’i saklayın ve ihtiyaç halinde eski manifest ile hızlı bir yeniden deploy süreci tasarlayın.

Kod ve Yapı Örnekleri
1) Blade Vite Entegrasyonu





@vite([‘resources/js/app.js’, ‘resources/css/app.css’])


2) Manifest Örnek Yapısı (doğrulama için)
{
“resources/js/app.js”: {
“file”: “assets/js/app.1234abcd.js”,
“src”: “/resources/js/app.js”
},
“resources/css/app.css”: {
“file”: “assets/css/app.5678efgh.css”,
“src”: “/resources/css/app.css”
}
}

3) Doğrulama Scripti (Node.js)
“`
// scripts/verify-manifest.js
const fs = require(‘fs’);
const data = fs.readFileSync(‘./public/build/manifest.json’, ‘utf8’);
const manifest = JSON.parse(data);
if (!manifest[‘resources/js/app.js’]) {
console.error(‘Manifest içerisinde app.js bulunamadı.’);
process.exit(1);
}
console.log(‘Manifest doğrulandı:’, manifest[‘resources/js/app.js’].file);
“`

Bu yazıyı beğendiyseniz, sosyal medya hesaplarınızda paylaşarak daha fazla kişiye ulaşmasını sağlayabilirsiniz. 😊

Ayrıca bizi sosyal medyada da takip edebilirsiniz;
Instagram: @lupusoft
Facebook: @lupusoft
X: @lupusoft
LinkedIn: @lupusoft
Current time (ISO): 2026-04-05T10:00:32.442+03:00

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir