乐于分享
好东西不私藏

Openclaw升级失败,原生二进制模块在安装过程中未能完整下载

Openclaw升级失败,原生二进制模块在安装过程中未能完整下载

15:11:20 [gateway] security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run `openclaw security audit`.

15:11:20 [gateway] starting channels and sidecars…

15:11:20 [hooks] loaded 4 internal hook handlers

15:11:29 [plugins] bonjour: watchdog detected non-announced service; attempting re-advertise (gateway fqdn=OpenClaw (2)._openclaw-gw._tcp.local. host=openclaw-(2).local. port=18789 state=probing)

 运行到这里卡住了,然后过一会儿窗口就自动关闭了,gateway启动失败,什么原因?

从日志看,Gateway 进程在启动过程中突然退出,是被matrix-sdk-crypto-nodejs原生模块文件不完整所导致的典型现象。这个问题在 OpenClaw 2026.4.24 及之后的版本中尤为常见。

简单来说,你的日志里虽然没出现具体的报错代码,但 Gateway 启动、执行 Bonjour 服务发现(显示 “probing” 状态)、接着无征兆闪退,并在 Windows 的 Temp 目录下留下了日志文件。这些迹象都指向了同一个根本原因。

📥 根本原因:核心依赖下载不完整

问题的根源在于一个名为 @matrix-org/matrix-sdk-crypto-nodejs 的原生二进制模块在安装过程中未能完整下载。

  • 文件不完整:在 OpenClaw 20260424 及后续版本的安装过程中,这个关键的原生二进制模块文件(正常约22 MB)可能只下载了一小部分(有时仅2.4 MB)。
  • 进程被“无声”杀灭:由于核心文件不完整,Node.js 在尝试加载该模块时,会触发操作系统级别的内存错误,从而“静默”地强制杀灭 Gateway 进程,导致我们无法在终端看到具体的 JavaScript 错误信息。

✨ 如何验证?

你可以先检查一下文件的大小来确认是不是这个问题。

# 在 PowerShell 或 CMD 中执行
# 注意:请将 '%APPDATA%\npm\node_modules\openclaw' 替换为你的 Node.js 全局模块的实际路径
dir"%APPDATA%\npm\node_modules\openclaw\node_modules\@matrix-org\matrix-sdk-crypto-nodejs\"

# 检查 'matrix-sdk-crypto.win32-x64-msvc.node' 这个文件的大小是否正常(应是 20MB 以上)

如果发现文件异常小,就确认是这个问题了。

🔧 解决方案

下面提供两个方案,你可以根据自己的情况选择一种来尝试。

方案一:稳定回退法(最推荐也最省心)

官方推荐的稳妥做法是先回退到上一个被验证过的稳定版本。


# 1. 停止当前可能残留的所有 OpenClaw 服务进程
pkill -f openclaw

# 2. 将版本临时回退到稳定版 2026.4.21
npm install -g openclaw@2026.4.21

# 3. 重新启动服务
openclaw gateway run

如果这个方案能让你的服务稳定运行,可以暂时用这个版本来等待后续修复。

方案二:重装修复法(适合希望使用最新版)

这个方法的核心是在网络环境非常稳定的情况下,重新安装来确保文件下载完整。


# 1. 彻底卸载当前不完整的版本
npm uninstall -g openclaw

# 2. 全新安装最新版,需要确保网络极其稳定
npm install -g openclaw@latest

# 3. 如果依旧失败,说明网络可能不稳定,可以尝试设置为国内镜像源后重装
npm install -g openclaw --registry=https://registry.npmmirror.com

如果重装还是失败,大概率是网络问题,建议直接采用方案一回退版本。

📋 其他值得顺带检查的配置项

为了确保万无一失,可以先运行 openclaw doctor --fix 来自动化修复一些常见的配置问题。之后再快速确认下面三点:

  • 运行模式是否缺失(gateway.mode):在 ~/.openclaw/openclaw.json 文件中,确保 gateway.mode 字段已存在,且值为 "local"
  • 端口是否被占用:如果 18789 端口被其他程序占用,也会导致启动失败。可以通过 netstat -ano | findstr :18789 来检查。
  • 配置文件是否完整:可以运行 openclaw config validate 来检查openclaw.json配置文件有没有语法错误。

如果按照上面的步骤操作后,问题依然存在,可以把你尝试的结果给我说说,我们再一起看看~