OC
OpenClaw 中文解释版

给五岁小朋友也能看懂的说明书

简要总结

Node + tsx Crash

这页说明书在讲一个“名字不是朋友”的小麻烦。当我们用 Node 和 tsx 这两个工具来启动 OpenClaw 时,它们会吵架,然后 OpenClaw 就摔倒(崩溃)了,还喊“__name 不是个函数!”。这页就是告诉你为什么它们会吵架,以及我们怎么先让它们和好,让 OpenClaw 能重新站起来工作。如果你在用 Node 和 tsx 时遇到 OpenClaw 启动不了,可以看看这里。

五岁小孩版解释

我们想用 Node 和 tsx 这两个工具来运行 OpenClaw,但是一启动,它就“摔倒”了,还报告了一个错误说“__name 不是个函数”。这就像你叫一个朋友的名字,但他却变成了一块石头,没法回应你。这个麻烦是在我们把一个叫 Bun 的工具换成 tsx 之后开始的。

为什么会这样呢? 这主要是因为 tsx 在帮忙翻译代码时,用了一个叫 __name 的小帮手来记住函数的名字。但在某些情况下,这个小帮手可能走丢了,或者没有被正确地带到游戏里来,所以当代码想找它帮忙时,就找不到了,游戏就玩不下去了。

在什么情况下会遇到这个问题?

  • 你正在使用 Node 的版本是 25.x(比如 v25.3.0)。
  • 你正在使用 tsx 的版本是 4.21.0。
  • 你的电脑系统可能是 macOS,但其他能运行 Node 25 的电脑也可能遇到。

那我们怎么试试看是不是真的遇到了这个问题呢? 你可以像下面这样,在存放 OpenClaw 代码的文件夹里,打开一个“命令窗口”输入命令来试试:

  1. 先检查工具:输入 node --version,看看 Node 是不是 25 版本。
  2. 准备玩具:输入 pnpm install,这就像把乐高积木都拿出来摆好。
  3. 试着启动:输入 node --import tsx src/entry.ts status,这就是试着启动 OpenClaw 看看状态。

如果它“摔倒”了并报错,那就说明遇到了我们说的麻烦。

别担心,我们有办法先绕过这个麻烦! 虽然 tsx 和 Node 25 现在配合不好,但我们可以用其他方法来玩:

  1. 换回原来的好朋友:暂时先不用 tsx,换回之前用的 Bun 工具来运行开发脚本。这是目前最简单的办法。
  2. 用另一个翻译官:我们可以先用 tsc 这个工具来把代码翻译好,存起来,然后再让 Node 去运行翻译好的文件。
    • 打开一个命令窗口,输入:pnpm exec tsc --watch --preserveWatchOutput。这就像让 tsc 在旁边一直看着,代码一变它就马上翻译。
    • 再打开另一个命令窗口,输入:node --watch openclaw.mjs status。这就像让 Node 去运行那个翻译好的文件,并且一直看着它。
  3. 试试其他版本的 Node:这个问题可能在 Node 25 上比较明显。你可以试试安装 Node 22 或 24 这些更稳定的版本,看看用它们配合 tsx 会不会好一些。

需要注意的事情:

  • 这个麻烦是 tsx 和 Node(特别是 25 版本)之间的小矛盾,不是 OpenClaw 自己的错。
  • 我们还在想办法彻底解决它,比如看看是不是只有 Node 25 会这样,或者告诉 tsx 和 esbuild 的开发者们。
  • 在彻底解决之前,你可以先用上面“换回原来的好朋友”或者“用另一个翻译官”的办法来继续玩 OpenClaw。