EADDRINUSE 或 Port 18789 is already in use
在 Windows 上安装或启动 OpenClaw 时遇到“端口占用”(EADDRINUSE 或 Port 18789 is already in use)是非常常见的问题。这通常是因为之前的 OpenClaw 进程没有正常关闭,或者其他软件占用了默认端口。
请按照以下步骤快速解决:
1. 快速解决:查找并强制关闭占用进程
这是最直接有效的方法,通过命令行找出是谁占用了端口并将其“杀掉”。
步骤如下:
1. 查找占用端口的进程 ID (PID)
在 PowerShell 或 CMD 中输入以下命令并回车:
netstat -ano | findstr :18789
* 结果解读:你会看到类似 TCP 0.0.0.0:18789 ... LISTENING 12345 的输出。最后那一列数字(例如 12345)就是 PID(进程ID)。
2. 强制结束进程
将下面的 [PID] 替换为你刚才查到的数字,然后执行:
taskkill /F /PID [PID]
* 例如:taskkill /F /PID 12345
* 如果提示“成功终止”,说明端口已释放。
3. 重新启动 OpenClaw
再次输入启动命令:
openclaw start
2. 替代方案:修改 OpenClaw 启动端口
如果你不想关闭占用端口的程序,或者找不到原因,可以直接让 OpenClaw 换一个端口运行。
方法 A:使用命令行参数(推荐)
在启动时指定一个新端口(例如 18790):
openclaw gateway --port 18790
启动后,浏览器访问地址变为:http://127.0.0.1:18790。
方法 B:修改配置文件
1. 找到 OpenClaw 的配置文件(通常在用户目录下的 .openclaw 文件夹中)。
2. 打开 openclaw.json(或相关配置项)。
3. 找到 gateway 下的 port 设置,将 18789 修改为 18790 或其他未被占用的端口。
4. 保存并重启服务。
3. 特殊情况排查
如果上述方法无效,可能是以下原因导致的:
* 残留的旧版本进程:
如果你之前安装过旧版本(如 Cladbot)或其他 Node.js 应用,可能有残留进程。
* 解决:在任务管理器中结束所有 node.exe 进程,或者直接重启电脑。
* 权限不足:
有时系统会拦截端口绑定。
* 解决:右键点击 PowerShell 图标,选择 “以管理员身份运行”,然后再执行启动命令。
* 防火墙拦截:
Windows 防火墙可能阻止了 OpenClaw 监听端口。
* 解决:在控制面板的防火墙设置中,允许 Node.js 通过防火墙,或暂时关闭防火墙测试。
通常情况下,使用 方法 1 即可瞬间解决问题。如果解决后仍然报错,建议重启电脑后再试。
浙公网安备 33010602011771号