Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Sự cố sập Node + tsx “__name is not a function”
Tóm tắt
Chạy OpenClaw qua Node vớitsx bị lỗi khi khởi động với:
tsx (commit 2871657e, 2026-01-06). Cùng một đường dẫn runtime trước đó hoạt động với Bun.
Môi trường
- Node: v25.x (quan sát trên v25.3.0)
- tsx: 4.21.0
- HĐH: macOS (khả năng cũng tái hiện trên các nền tảng khác chạy Node 25)
Tái hiện (chỉ Node)
Tái hiện tối thiểu trong repo
Kiểm tra phiên bản Node
- Node 25.3.0: lỗi
- Node 22.22.0 (Homebrew
node@22): lỗi - Node 24: chưa được cài ở đây; cần xác minh
Ghi chú / giả thuyết
tsxdùng esbuild để chuyển đổi TS/ESM.keepNamescủa esbuild sinh helper__namevà bọc các định nghĩa hàm bằng__name(...).- Sự cố sập cho thấy
__nametồn tại nhưng không phải là hàm ở runtime, ngụ ý rằng helper bị thiếu hoặc bị ghi đè cho mô-đun này trong đường dẫn loader của Node 25. - Các vấn đề tương tự với helper
__nameđã được báo cáo trong những công cụ tiêu thụ esbuild khác khi helper bị thiếu hoặc bị viết lại.
Lịch sử hồi quy
2871657e(2026-01-06): các script đã đổi từ Bun sang tsx để biến Bun thành tùy chọn.- Trước đó (đường dẫn Bun),
openclaw statusvàgateway:watchhoạt động.
Cách khắc phục tạm thời
- Dùng Bun cho các script phát triển (hoàn tác tạm thời hiện tại).
-
Dùng
tsgođể kiểm tra kiểu của repo, rồi chạy output đã build: -
Ghi chú lịch sử:
tscđã được dùng ở đây trong lúc gỡ lỗi vấn đề Node/tsx này, nhưng các lane kiểm tra kiểu của repo hiện dùngtsgo. -
Tắt esbuild keepNames trong TS loader nếu có thể (ngăn việc chèn helper
__name); tsx hiện chưa expose tùy chọn này. -
Kiểm thử Node LTS (22/24) với
tsxđể xem vấn đề có chỉ riêng Node 25 hay không.
Tham khảo
- https://opennext.js.org/cloudflare/howtos/keep_names
- https://esbuild.github.io/api/#keep-names
- https://github.com/evanw/esbuild/issues/1031
Bước tiếp theo
- Tái hiện trên Node 22/24 để xác nhận hồi quy Node 25.
- Kiểm thử
tsxnightly hoặc pin về phiên bản cũ hơn nếu có hồi quy đã biết. - Nếu tái hiện trên Node LTS, gửi một bản tái hiện tối thiểu lên upstream kèm stack trace
__name.