Stack Trace
Bir çökmeyi bir geliştiricinin okuduğu gibi gösterin. Önce kendi kodunuz, framework çerçeveleri katlanmış, hatalı satır bağlamıyla ve her neden sırasıyla. Node, Chrome, Firefox, Safari, Bun, Deno ve Python stack'lerini ayrıştırır; kopyalama, düzenleyicide açma ve düzeltmesini isteme içerir.
Bir ajanın komutu, araç çağrısı veya testi başarısız olduğunda, hatanın işe yarayan kısmı elli satırlık framework iç detaylarının altında kalır. Stack Trace hata türünü ve mesajı başa koyar, kendi frame'lerinizi dosya, satır ve sütunla tam kontrastta gösterir ve ardışık framework frame'lerini “8 framework frames · next” gibi sade bir satıra katlar.
parseStackTrace; Node, Chrome, Bun ve Deno'daki V8 stack'lerini, Firefox ve Safari stack'lerini, Vitest frame'lerini altlarındaki kodla birlikte ve Python traceback'lerini okur; [cause], Caused by: ve Python'un “direct cause” ile “during handling” bölümlerinden gelen zincirleme nedenler de buna dahildir. node_modules, node:internal, Next.js iç detayları, site-packages ve standart kütüphaneyi uygulama dışı kod olarak sınıflandırır, file:// ve webpack-internal yollarını okunabilir proje yollarına çevirir. Tanımadığı satırlar korunur, asla atılmaz.
Kodunuzun hata verdiği frame, Code Block ile hatalı satırı vurgulanmış kaynağını gösterebilir. Uzun mesajlar Show more ile kısaltılır, Copy orijinal metni verir ve frame'ler getFrameHref veya onFrameClick ile düzenleyicinizde açılır. Kompakt varyant, başarısız bir araç çağrısı için aynı frame'lere açılan tek bir “Failed: TypeError: …” satırıdır.
HextaUI Pro'yu alın
Tek bir ödeme, gelecekte eklenecekler dahil tüm blokların kilidini açar. Fiyatları görün.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/stack-trace
Bir log'dan
Bir terminalden, log'dan veya araç sonucundan ham metni verin. getEditorHref frame'leri vscode:// veya cursor:// bağlantılarına çevirir, Ask to fix ise ajana geri göndermeniz için ayrıştırılmış hatayı size verir.
AI SDK ile
Hata fırlatan bir araç, errorText ile output-error durumunda biter. Bunu başarısız ToolCall içinde kompakt bir StackTrace olarak gösterin; böylece adım biri açana kadar tek satır kalır.
Bir Next.js error boundary içinde
parseError bir Error nesnesini adı, mesajı ve neden zinciriyle birlikte okur. Geliştirmede trace'i, üretimde sade bir mesajı gösterin.
Yalnızca frame'ler
parseStackTrace ve StackFrames tek başına da çalışır; örneğin başarısız her testin altında kısa bir stack göstermek için.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
StackTrace | Hata: tür, mesaj, eylemler, frame'ler ve nedenler. Varsayılanı bir kart; compact ise genişleyen tek bir satırdır. |
StackFrames | Katlanmış framework frame'leri ve kaynak alıntısıyla birlikte tek başına frame listesi. |
parseStackTrace, parseError | Metni veya bir Error nesnesini ParsedStackTrace'e çeviren saf ayrıştırıcılar. |
getEditorHref | Bir frame için vscode://, cursor://, windsurf:// veya zed:// bağlantısı oluşturur. |
StackTrace
children dışındaki tüm div prop'larını da kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
traceHam stack metni ya da kendiniz ayrıştırıp zenginleştirdiğiniz bir trace. | string | ParsedStackTrace | – |
variantcompact, frame'lere açılan tek bir “Failed: …” satırı çizer; bir ToolCall içinde kullanmak içindir. | "default" | "compact" | "default" |
labelHata türünden önceki durum sözcüğü, örneğin “Crashed” veya “Test failed”. | string | "Failed" |
rootMutlak yollardan çıkarılan proje kökü. Verilmezse node_modules veya .venv'den bulunur. | string | – |
getFrameHrefBir frame'i bağlantıya çevirir, örneğin getEditorHref ile. | (frame: StackFrame) => string | undefined | – |
onFrameClickBir frame'e tıklandığında çağrılır. Bağlantıları kendiniz yönetmek için event.preventDefault() çağırın. | (frame: StackFrame, event: MouseEvent) => void | – |
onAskToFixAsk to fix'i gösterir ve ayrıştırılmış hatayı alır. | (trace: ParsedStackTrace) => void | – |
askLabelAsk to fix butonunun etiketi. | string | "Ask to fix" |
showSourceFrame'lerin altında kaynak satırlarını ve en üst frame'iniz için alıntıyı gösterir. | boolean | true |
foldİki veya daha fazla ardışık framework ya da dahili frame'i katlar. | boolean | true |
messageLinesShow more'dan önce gösterilen mesaj satırları. | number | 3 |
openKompakt varyantın kontrollü açık durumu. | boolean | – |
defaultOpenKompakt varyantın açık başlayıp başlamayacağı. | boolean | false |
onOpenChangeKompakt varyant açıldığında veya kapandığında çağrılır. | (open: boolean) => void | – |
StackFrames
children dışındaki tüm ol prop'larını da kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
framesparseStackTrace'ten gelen frame'ler, en içteki önce. | StackFrame[] | – |
foldUygulamaya ait olmayan ardışık frame'leri katlar. | boolean | true |
showSourceKaynak satırlarını ve en üst frame'in alıntısını gösterir. | boolean | true |
getFrameHrefBir frame'i bağlantıya çevirir. | (frame: StackFrame) => string | undefined | – |
onFrameClickBir frame'e tıklandığında çağrılır. | (frame: StackFrame, event: MouseEvent) => void | – |
parseStackTrace(text, options)
Bir ParsedStackTrace döndürür. parseError(error, options) aynısını bir Error nesnesi ve nedeni için yapar.
| Prop | Tür | Varsayılan |
|---|---|---|
textBir stack, bir traceback ya da onu çevreleyen ham log çıktısı. | string | – |
options.rootMutlak yollardan çıkarılacak proje kökü. | string | – |
options.classifyBir frame'in türünü geçersiz kılar; örneğin vendored bir klasörü framework kodu olarak saymak için. | (frame: StackFrame) => StackFrameKind | undefined | – |
| Prop | Tür | Varsayılan |
|---|---|---|
typeTypeError veya billing.plans.PlanNotFound gibi hata türü. | string | – |
messageBirden fazla satıra yayılabilen mesaj. | string | – |
framesHer dilde en içteki önce gelir, yani frames[0] hatanın fırlatıldığı yerdir. | StackFrame[] | – |
rawCopy'nin kullandığı orijinal metin. | string | – |
languageHangi biçimin ayrıştırıldığı. | "javascript" | "python" | – |
codeERR_MODULE_NOT_FOUND veya ECONNREFUSED gibi hata kodu. | string | – |
detailsNode'un frame'lerden sonra yazdığı errno ve syscall gibi ek özellikler. | string | – |
preambleHatadan önce gelen log satırları. | string | – |
causeZincirdeki sonraki hata; relation değeri cause veya context olur. | ParsedStackTrace | – |
| Prop | Tür | Varsayılan |
|---|---|---|
kindKendi kodunuz, bir bağımlılık ya da runtime'ın kendisi. | "app" | "framework" | "internal" | – |
fnFonksiyon adı. Anonim fonksiyonlarda undefined olur ve yalnızca konumları gösterilir. | string | – |
fileProjeye göre okunabilir yol, örneğin app/api/users/route.ts. | string | – |
pathfile:// ve webpack önekleri kaldırılmış, bildirildiği şekliyle konum. Stack'te mutlak yol varsa mutlaktır. | string | – |
line, columnDosyadaki konum. | number | – |
packageUygulamaya ait olmayan bir frame'in ait olduğu paket, örneğin next veya fastapi. | string | – |
source, sourceStartKaynak satırları ve ilkinin numarası. Birden fazla satır alıntı olarak gösterilir. | string, number | – |
rawOrijinal satır. Ayrıştırıcının tanımadığı satırlarda yalnızca raw bulunur. | string | – |
getEditorHref(frame, options)
Diskte dosyası olmayan frame'ler için undefined döndürür.
| Prop | Tür | Varsayılan |
|---|---|---|
options.editorKullanılacak URL şeması. | "vscode" | "cursor" | "windsurf" | "zed" | "vscode" |
options.rootwebpack-internal frame'lerindeki gibi göreli yollarla birleştirilir. | string | – |
| Tuş | Action |
|---|---|
| Tab | Eylemler, Show more, frame bağlantıları ve katlanmış frame satırları arasında gezinir. |
| EnterSpace | Katlanmış frame'leri veya kompakt satırı açar ya da kapatır. |
| Enter | Bir frame bağlantısını düzenleyicinizde açar. |
- Frame'ler sıralı bir listedir; böylece ekran okuyucular kaç tane olduğunu ve her birinin konumunu duyurur.
- Katlanmış satırlar aria-expanded içeren butonlardır ve katlanmış frame'ler tarayıcının sayfada bul özelliğiyle bulunabilir; bulunduğunda katlama açılır.
- Varsayılan görünüm, durumu ve hata türüyle adlandırılmış bir gruptur; her neden “Caused by …” adlı bir bölümdür.
- Durum asla yalnızca renkle gösterilmez: hata, simgesinin yanında metin olarak yazılır ve Copy “Copied” duyurur.
Şunlarla geliştirildi
Stack Trace bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
4 dosya, components/blocks/stack-trace konumuna eklendi.