Orbit

Başarısız Derlemelerin Sorunlarını Giderme

When an Orbit build fails, the deployment detail page gives you the full log plus a categorised failure summary and a suggested fix. This guide walks through reading that page, the failures Orbit…

Bir Orbit derlemesi başarısız olduğunda, dağıtım ayrıntıları sayfası size tam günlük artı kategorize edilmiş bir başarısızlık özeti ve önerilen bir düzeltme sağlar. Bu kılavuz, bu sayfayı okumayı, Orbit'in ada göre tanıdığı başarısızlıkları, tanımadığı başarısızlıkları ve bir derleme başarılı olduğunda ancak site yine de yanlış olduğunda ne yapılacağını açıklar.

Başarısızlığı Okuma

  1. Projenizi Orbit'te açın.
  2. Dağıtımlar sekmesini açın.
  3. Durumu Başarısız olan dağıtıma tıklayın.
  4. Günlüğün üzerindeki başarısızlık özetini ilk olarak okuyun, ardından günlüğün kendisini okuyun.

Kategorize edilmiş başarısızlık özetini gösteren başarısız dağıtım

Orbit her başarısızlığa bir kategori atar: Bellek yetersiz, Derleme hatası, Test başarısızlığı, Lint hatası, Yükleme hatası, Ağ hatası, Zaman aşımı veya Bilinmeyen hata. Kategori, tek bir günlük satırı okumadan önce hangi boru hattı bölümüne bakılacağını size söyler.

Ayrıca bir AI tanı al düğmesi vardır. Günlüğün son 120 satırını algılanan çerçeve ve başarısızlık kategorisi ile birlikte okur ve düz dildeki bir açıklama döndürür.

Tanı AI tarafından oluşturulur, hareket etmeden önce doğrulayın olarak etiketlenmiştir. Bunu, kodunuzun otoritesi değil, günlüğün doğru satırına çok iyi bir işaretçi olarak ele alın. Herhangi bir şey değiştirmeden önce başvurduğu satırı okuyun.

Derleme hiçbir zaman başlamadıysa ve Sıraya alındı durumunda takılıysa, aşağıdaki sıraya alınan derlemeler bölümüne geçin.

Orbit'in Ada Göre Tanıdığı Başarısızlıklar

Bunlar dağıtım sayfasında belirli bir önerilen düzeltme ile birlikte gelir.

Orbit'in algıladığıAnlamıDüzeltme
Eksik modülBir içe aktarma, yüklü olmayan bir pakete işaret ederPaketi package.json öğesine ekleyin ve işleyin veya içe aktarma yolunda typo'yu düzeltin
ERESOLVE çakışmasınpm eş bağımlılığı karşılayamazpackage.json öğesindeki çakışmayı çözün veya Ayarlar'daki yükleme komutumuza --legacy-peer-deps ekleyin
TypeScript hatasıDerleme sırasında tür kontrolü başarısız olduListelenen hataları düzeltin. Üçüncü taraf türü sorunları için, skipLibCheck: true içinde tsconfig.json
Bellek yetersizDerleme, derleme makinesinin RAM'ini aştıBir ortam değişkeni olarak NODE_OPTIONS=--max-old-space-size=2048 ekleyin veya daha büyük derleme makinesine sahip bir plana taşıyın
Derleme diski doluDerleme diskini doldurduBeklenmedik şekilde büyük bir node_modules veya yapıt arayın veya daha büyük derleme diskine sahip bir plana taşıyın
Derleme zaman aşımına uğradıDerleme 30 dakikalık durdurma limitine ulaştıDerleme önbelleğini etkinleştirin, paket boyutunu azaltın veya neyin asılı kaldığını bulun
Paket bulunamadı (404)Bir bağımlılık bu ad veya sürümde mevcut değilpackage.json öğesinde typo kontrolü yapın veya paketin yayınlandığını doğrulayın
ESLint hatalarıLint hataları derlemeyi engellediBunları düzeltin veya framework yapılandırmanızda lint'in derlemede başarısız olmasını durdurun
Söz dizimi hatasıAyrıştırılamayan kaynakEksik köşeli ayraç, kapalı olmayan dize veya Node sürümünün desteklemediği söz dizimi
Dosya bulunamadıBaşvurulan dosya depo içinde değilDosyanın işlendiğini doğrulayın ve yolun durumunu kontrol edin
Kilit dosyası güncel değilKilit dosyası package.json ile eşleşmiyorPaket yöneticinizin yüklemesini yerel olarak çalıştırın ve güncellenmiş kilit dosyasını işleyin

Kilit dosyası uyuşmazlığı, en yaygın ilk dağıtım başarısızlığı ve en kafa karıştırıcı olanıdır, çünkü yerel olarak asla gerçekleşmez. npm ci, yarn install --frozen-lockfile ve pnpm install --frozen-lockfile, kilit dosyası package.json ile anlaşmazlık olduğunda ilerlemeyi reddeder. Kilit dosyasını yerel olarak yeniden oluşturun ve işleyin.

Faz Başına Yaygın Başarısızlıklar

Bağımlılık Yüklemesi Başarısız Oluyor

Yükleme aşaması hata verdi.

  • Yanlış paket yöneticisi. Orbit, kilit dosyanızdan npm, yarn veya pnpm'i seçer. Birden fazla kilit dosyası işlenmişse, seçim beklediğiniz olmayabilir. Kullanmadığınız olanları silin veya Ayarlar öğesinde Yükleme komutu açıkça ayarlayın.
  • Özel kayıt defteri. Bir bağımlılık özel bir kayıt defterinden gelirse, kimlik doğrulama belirtecinin derleme zamanında bir ortam değişkeni olarak kullanılabilir olması ve .npmrc değişkeniniz buna başvurmalıdır.
  • Node.js sürümü uyuşmazlığı. Bazı paketler minimum Node sürümü gerektirir. Ayarlar öğesinde Node.js sürümü öğesini ana sürüm numarasına ayarlayın: 18, 20 veya 22.
  • Büyük monorepo'da bellek yetersiz. npm ci yerine npm install kullanın ve daha büyük derleme makinesine sahip bir plan düşünün.

Derleme Komutu Başarısız Oluyor

Derleme aşaması hata verdi.

  • TypeScript veya lint hataları. Orbit derleme komutunuzu tam olarak yazıldığı gibi çalıştırır. Derlemesi yerel olarak başarısız olursa, burada da başarısız olur.
  • Eksik derleme zamanı ortam değişkeni. Derleme sırasında okunan bir değişken, çalışma zamanında değil, derleme çalışmadan önce var olmalıdır. Env vars sekmesine ekleyin ve yeniden dağıtın. Bir dağıtımdan sonra eklenen bir derleme zamanı değişkeni, kendisine geriye dönük olarak uygulanmaz.
  • Monorepo'da yanlış kök dizini. Ayarlar öğesinde Kök dizini öğesini uygulamanın yoluna ayarlayın, örneğin apps/web.

Derleme Zaman Aşımına Uğradı

Derlemeler her plan üzerinde 30 dakikalık duvar saati zamanında durdurulur. Sizin sürekli olarak buna yaklaşıyorsa:

  • Giriş bekleyen bir işlem için günlüğü kontrol edin. İstekte bulunan bir derleme, asılı kalan bir derlemedir.
  • İhtiyaç duymadığınız sürece büyük bir bağımlılık ağacında --legacy-peer-deps kullanmaktan kaçının.
  • Derleme önbelleğinin kullanıldığından emin olun. Liftoff ve Apex planları bunu içerir; dağıtım sayfası Önbellek isabet veya Soğuk derleme gösterir.
  • Daha fazla derleme vCPU'su olan bir plana geçin. Orbit Plan Sınırları öğesini inceleyin.

Derleme Hiçbir Zaman Başlamıyor

Sıraya alındı durumunda takılı kalan bir dağıtım, bir derleme yuvası için bekliyor. Ayrıntı sayfası sıra konumunuzu ve kaç eş zamanlı derleme yuvanızın kullanımda olduğunu gösterir ve birisi boşaldığında derlemeyi otomatik olarak başlatır. Launch ve Liftoff bir eş zamanlı derlemeye izin verir; Apex üçe izin verir.

Hesabınız genelinde uçuş halindeki her şeyi Orbit öğesinde, ardından Kuyruk öğesinde görebilirsiniz.

Bir dağıtım, başka hiçbir şey çalışmadığı halde sıraya alınan durumda oturuyorsa, büyük olasılıkla kuyruğa alınmaktan ziyade tutuluyordur. Şunları kontrol edin:

  • Onay bekliyor, Üretim için onay iste açıksa
  • Projedeki bir dağıtım kilidi
  • Geçerli saati veya günü engelliyorsa bir dağıtım donma zamanlaması
  • CI gerekli kontroller boru hattınız üzerinde bekliyor
  • Üretimden önce hazırlama başarısı iste aynı işlemenin bir hazırlama dağıtımını bekliyor

Derleme Tamamen Atlandı

Bir push hiç dağıtım üretmediyse, büyük olasılıkla kasten filtrelenmiştir:

  • Yoksayılan yollar: gönderilen her dosya *.md veya docs/** gibi bir desene eşleşmiştir
  • Dal yoksayma desenleri: dal dependabot/* gibi bir şeyle eşleşmiştir
  • Kök dizini: gönderilen hiçbir şey bu proje için monorepo alt dizinine dokunmadı
  • Dal önizlemeleri kapalı ve push üretim veya hazırlamaya değildi

Derleme Başarılı Ancak Site Yanlış

Yeşil bir derleme ve kırık bir site, neredeyse her zaman bir kod sorunu değil yapılandırma sorunudur.

Her sayfada 404. Çıkış dizini yanlış: Orbit, derleme çıktınız olmayan bir klasörü yayınladı. Derlemeleriniz gerçekten neyi yazdığını kontrol edin. Yaygın değerler dist, .next, out, build ve .output öğesidir.

Yalnızca dinamik rotaları üzerinde 404. Uygulama çalışan bir sunucu gerektirir ve statik dosyalar olarak sunulur. Ayarlar öğesinde Çalışma Zamanı altında Sunucu modu öğesini açın. Bu, SSR içeren Next.js, Remix, Nuxt ve statik dışa aktarma olmayan diğer her şey için gereklidir.

Dağıtımdan sonra varlık 404, sitede zaten olan kullanıcılar için. Eski sayfayı yüklediler ve artık mevcut olmayan eski paket URL'lerini istiyorlar. Ayarlar öğesinde Eğrilik koruması öğesini açın; bu, yeni bir dağıtım canlı gittikten sonra bir bekletme penceresi için önceki derlememenin yapıtlarını kullanılabilir tutar.

Ortam değişkeni çalışma zamanında tanımsız. Değişkenin kapsamının gerçekten bu ortamı kapsadığını ve dağıtımın değişiklikten sonra geldiğini doğrulayın. Dağıtım ayrıntısı sayfası, derleme zamanında enjekte edilen tam olarak hangi anahtarları listelenir ve bunları geçerli yapılandırmanızla karşılaştırır.

Framework başına derleme ayarları Derleme Komutu ve Çıkış Dizinini Yapılandırma öğesinde bulunur.

Yeniden Deneme

Başarısız dağıtım sayfasında:

  • Derlemeyi yeniden dene aynı işlemeyi yeniden çalıştırır.
  • Daha fazla yeniden deneme seçeneği, ardından Temizlenen önbellek ile yeniden dene, önce derleme önbelleğini siler.

Ayrıca Orbit'i sizin için yeniden denemesine sahip olabilirsiniz. Ayarlar öğesindeki Derleme otomatik yeniden deneme, bir ağ hatası veya zaman aşımı gibi altyapı hataları nedeniyle başarısız olan derlemeleri üç kez kuyruğa yeniden alır. Kasıtlı olarak kod hatalarını yeniden denemez, bu nedenle derleme, lint veya test hatası asla döngü girmez.

Temizlenen önbellek ile yeniden deneme, ortam için önbelleğe alınan node_modules öğesini siler ve geri alınamaz. Sonrasındaki derleme yavaş olacaktır. Bu amacın kendisi, ancak büyük monorepo üzerinde bunu kendiliğinden yapma.

Kötü Bir Derlemenin Kullanıcılara Ulaşmasını Durdurma

Bir dağıtım zaten canlı gittiyse ve bir şeyleri kırıp verdiyse, basın altında ileri taşımaya çalışmak yerine geri alın. Geri alma, önceden oluşturulmuş bir yapıyı yükseltir ve saniyeler sürer. Dağıtımı Geri Alma öğesini inceleyin.

Araştırırken daha fazla dağıtımı durdurmak için, projedeki Dağıtımları kilitle öğesine tıklayın. İtme tarafından tetiklenen dağıtımlar, kilidini açana kadar atlanır, ancak düzeltmeyi gönderebilmeniz için manuel dağıtımlar yine de çalışır.

Ayrıca Orbit'i bunu otomatik olarak yapmasını sağlayabilirsiniz: Başarısızlık sırasında otomatik geri alma, üretim dağıtımı başarısız olduğunda son sağlıklı dağıtımı geri yükler ve Sağlık kontrolü yolu yeni dağıtım 15 saniye içinde 2xx ile yanıt vermediğinde onu geri yükler.

Hala Takılı

Günlük sadece hata iletisi olmadan biterse, derleme işlemi büyük olasılıkla öldürüldü: bellek yetersiz veya derleme makinesi talep edildi. Bir kez yeniden deneyin. Aynı şekilde iki kez başarısız olursa, KPanel'den bir bilet açın veya support@kapsulehost.com adresine e-posta gönderin ve ayrıntı sayfasında gösterilen dağıtım kimliğini ekleyin.

İlgili Okuma

Hala yardıma mı ihtiyacınız var?

Bize şu adresinden e-posta gönderin: support@kapsulehost.com ya da KPanel'de sohbet açın.

KPanel'i Aç
Başarısız Derlemelerin Sorunlarını Giderme