docs/docs/tr/debug/node-issue.md
2026-04-24 09:40:10 +00:00

3.8 KiB
Raw Blame History

read_when summary title x-i18n
Yalnızca Node ile çalışan geliştirme script'lerini veya izleme modu hatalarını hata ayıklama
OpenClaw'da tsx/esbuild yükleyici çökmelerini araştırma
Node + tsx `"__name is not a function"` çökme notları ve geçici çözümler Node + tsx çökmesi
generated_at model provider source_hash source_path workflow
2026-04-24T09:07:38Z gpt-5.4 openai 7d043466f71eae223fa568a3db82e424580ce3269ca11d0e84368beefc25bd25 debug/node-issue.md 15

Node + tsx __name is not a function çökmesi

Özet

OpenClaw'ı Node ile tsx üzerinden çalıştırmak başlangıçta şu hatayla başarısız oluyor:

[openclaw] Failed to start CLI: TypeError: __name is not a function
    at createSubsystemLogger (.../src/logging/subsystem.ts:203:25)
    at .../src/agents/auth-profiles/constants.ts:25:20

Bu durum, geliştirme script'lerini Bun'dan tsx'e geçirdikten sonra başladı (commit 2871657e, 2026-01-06). Aynı çalışma zamanı yolu Bun ile çalışıyordu.

Ortam

  • Node: v25.x (v25.3.0 üzerinde gözlemlendi)
  • tsx: 4.21.0
  • OS: macOS (yeniden üretimin Node 25 çalıştıran diğer platformlarda da olması olası)

Yeniden üretim (yalnızca Node)

# repo kökünde
node --version
pnpm install
node --import tsx src/entry.ts status

Repo içinde en küçük yeniden üretim

node --import tsx scripts/repro/tsx-name-repro.ts

Node sürüm kontrolü

  • Node 25.3.0: başarısız
  • Node 22.22.0 (Homebrew node@22): başarısız
  • Node 24: burada henüz kurulu değil; doğrulanması gerekiyor

Notlar / hipotez

  • tsx, TS/ESM dönüşümü için esbuild kullanır. esbuild'in keepNames seçeneği bir __name yardımcı işlevi üretir ve işlev tanımlarını __name(...) ile sarar.
  • Çökme, çalışma zamanında __name'in var olduğunu ama işlev olmadığını gösteriyor; bu da yardımcı işlevin eksik olduğunu veya Node 25 yükleyici yolunda bu modül için üzerine yazıldığını ima eder.
  • Benzer __name yardımcı işlev sorunları, yardımcı işlev eksik olduğunda veya yeniden yazıldığında diğer esbuild tüketicilerinde de bildirilmiştir.

Regresyon geçmişi

  • 2871657e (2026-01-06): Bun'ı isteğe bağlı yapmak için script'ler Bun'dan tsx'e değiştirildi.
  • Ondan önce (Bun yolu), openclaw status ve gateway:watch çalışıyordu.

Geçici çözümler

  • Geliştirme script'leri için Bun kullanın (geçerli geçici geri alma).

  • Repo type check işlemi için tsgo kullanın, sonra derlenmiş çıktıyı çalıştırın:

    pnpm tsgo
    node openclaw.mjs status
    
  • Tarihsel not: Bu Node/tsx sorununu hata ayıklarken burada tsc kullanıldı, ancak repo type check hatları artık tsgo kullanıyor.

  • Mümkünse TS yükleyicide esbuild keepNames seçeneğini devre dışı bırakın (__name yardımcı işlev eklemesini önler); tsx bunu şu anda dışa açmıyor.

  • Sorunun Node 25'e özgü olup olmadığını görmek için tsx ile Node LTS'yi (22/24) test edin.

Referanslar

Sonraki adımlar

  • Node 25 regresyonunu doğrulamak için Node 22/24 üzerinde yeniden üretin.
  • Bilinen bir regresyon varsa tsx nightly sürümünü test edin veya daha eski bir sürüme sabitleyin.
  • Node LTS üzerinde de yeniden üretiliyorsa, __name yığın iziyle birlikte yukarı akışa en küçük yeniden üretimi içeren bir hata bildirimi açın.

İlgili