Diagnostics
Node- + tsx-Absturz
Absturz von Node + tsx mit „__name is not a function“
Status
Behoben. Dieser Absturz lässt sich weder mit der aktuellen, in
package.json fixierten tsx-Version (4.22.3) noch mit aktuellen Node-Versionen reproduzieren. Diese Seite bleibt für den Fall erhalten, dass ein
künftiges Upgrade von tsx/esbuild den Fehler erneut verursacht.
Ursprüngliches Symptom
Beim Ausführen der OpenClaw-Entwicklungsskripte über tsx trat beim Start folgender Fehler auf:
[openclaw] CLI konnte nicht gestartet werden: TypeError: __name is not a function bei createSubsystemLogger (src/logging/subsystem.ts) bei <caller> (src/agents/auth-profiles/constants.ts)Die Zeilennummern wurden weggelassen; beide Dateien wurden seit dem ursprünglichen Absturz geändert, sodass die konkreten Zeilen nicht mehr übereinstimmen.
Der Fehler trat auf, nachdem die Entwicklungsskripte von Bun auf tsx (2871657e,
2026-01-06) umgestellt worden waren, um Bun optional zu machen. Beim entsprechenden Bun-basierten Pfad trat kein Absturz auf.
Ursprünglich wurde der Fehler mit Node v25.3.0 unter macOS beobachtet; es wurde davon ausgegangen, dass wahrscheinlich auch andere Plattformen betroffen waren, auf denen
Node 25 ausgeführt wurde.
Ursache
tsx transformiert TS/ESM über esbuild, wobei keepNames: true in
den Transformationsoptionen fest codiert ist. Diese Einstellung bewirkt, dass esbuild benannte Funktions-/Klassendeklarationen
in einen Aufruf eines __name-Helpers einschließt, damit fn.name die Minifizierung
und Bündelung übersteht. Der Absturz bedeutet, dass der Helper an der Aufrufstelle
dieses Moduls in der betroffenen Kombination aus tsx und Node fehlte oder überschattet wurde, sodass __name(...)
eine Ausnahme auslöste, anstatt den eingeschlossenen Wert zurückzugeben.
Aktuelle Reproduktionsprüfung
node --versionpnpm installnode --import tsx src/entry.ts statusMinimale isolierte Reproduktion (lädt nur das Modul aus dem ursprünglichen Stacktrace):
node --import tsx scripts/repro/tsx-name-repro.tsBeide Befehle werden derzeit fehlerfrei beendet. Falls einer davon erneut __name is not a function auslöst, erfassen Sie die genaue Node-Version, die tsx-Version
(node_modules/tsx/package.json) und den vollständigen Stacktrace, bevor Sie den Fehler im Upstream-Projekt melden.
Problemumgehungen (falls der Absturz erneut auftritt)
-
Führen Sie Entwicklungsskripte mit Bun statt mit
node --import tsxaus. -
Führen Sie
pnpm tsgozur Typprüfung aus und führen Sie anschließend die erstellte Ausgabe statt des Quellcodes übertsxaus:bash pnpm tsgonode openclaw.mjs status -
Probieren Sie eine andere
tsx-Version aus (pnpm add -D tsx@<version>ist eine Änderung der Abhängigkeiten und erfordert gemäß den Repository-Richtlinien eine Genehmigung), um durch Bisektion zu ermitteln, ob die darin enthaltene esbuild-Version den Fehler erneut verursacht hat. -
Testen Sie mit einer anderen Haupt-/Nebenversion von Node, um festzustellen, ob der Fehler versionsspezifisch ist.