Node + tsx “__name is not a function” çökmesi
Durum
Çözüldü. Bu çökme,package.json içinde sabitlenen mevcut tsx
sürümünde (4.22.3) veya güncel Node sürümlerinde yeniden oluşmuyor. Gelecekteki bir
tsx/esbuild yükseltmesinin sorunu yeniden ortaya çıkarması ihtimaline karşı burada tutulmuştur.
İlk belirti
OpenClaw geliştirme betiklerinitsx üzerinden çalıştırmak, başlangıçta şu hatayla başarısız oluyordu:
tsx kullanmaya geçmesinden sonra (2871657e, 2026-01-06) ortaya çıktı.
Bun tabanlı eşdeğer yol çökmüyordu. Sorun ilk olarak macOS üzerinde Node v25.3.0 ile
gözlemlendi; Node 25 çalıştıran diğer platformların da etkilenmesi olası kabul edildi.
Neden
tsx, dönüşüm seçeneklerinde sabit kodlanmış keepNames: true ile TS/ESM’yi
esbuild üzerinden dönüştürür. Bu ayar, fn.name küçültme ve paketleme sırasında
korunsun diye esbuild’in adlandırılmış işlev/sınıf bildirimlerini bir __name
yardımcısı çağrısıyla sarmalamasına neden olur. Çökme, etkilenen tsx/Node
birleşiminde söz konusu modülün çağrı noktasında yardımcının eksik olduğu veya gölgelendiği
anlamına gelir; bu nedenle __name(...), sarılmış değeri döndürmek yerine hata fırlattı.
Güncel yeniden oluşturma kontrolü
__name is not a function
hatası fırlatırsa üst projeye bildirmeden önce tam Node sürümünü, tsx
sürümünü (node_modules/tsx/package.json) ve eksiksiz yığın izlemesini kaydedin.
Geçici çözümler (çökme geri dönerse)
-
Geliştirme betiklerini
node --import tsxyerine Bun ile çalıştırın. -
Tür denetimi için
pnpm tsgokomutunu çalıştırın, ardından kaynağıtsxüzerinden çalıştırmak yerine derlenmiş çıktıyı çalıştırın: -
Paketlediği esbuild sürümünün hatayı yeniden ortaya çıkarıp çıkarmadığını
ikiye bölerek belirlemek için farklı bir
tsxsürümü deneyin (pnpm add -D tsx@<version>bir bağımlılık değişikliğidir ve depo politikası gereği onay gerektirir). - Hatanın sürüme özgü olup olmadığını görmek için farklı bir Node ana/alt sürümünde test edin.