问题描述
在安装 OpenClaw 时,你可能会遇到类似以下的错误信息:
npm ERR! engine Unsupported engine
npm ERR! notsup Not compatible with your version of node/npm: openclaw@latest
npm ERR! notsup Required: {"node":">=22.0.0"}
npm ERR! notsup Actual: {"node":"18.17.1","npm":"9.6.7"}
或者在运行时出现:
SyntaxError: Unexpected token '??='
at wrapSafe (internal/modules/cjs/loader.js:915:16)
这些错误都指向同一个根本原因:你的 Node.js 版本低于 OpenClaw 所要求的最低版本 22.0.0。OpenClaw 使用了大量 Node.js 22+ 才支持的语言特性,包括原生 WebSocket、import attributes 以及新的模块解析算法,因此旧版本无法运行。
诊断步骤
首先确认当前安装的 Node.js 版本:
node -v
如果输出低于 v22.0.0,例如 v18.17.1 或 v20.11.0,那么就需要升级。
同时检查 npm 版本,确保它与 Node.js 22 配套:
npm -v
Node.js 22 自带的 npm 版本为 10.x 或更高。如果你的 npm 版本低于 10,也可能导致安装过程出现异常。
解决方案
方案一:使用 nvm 切换版本(推荐)
nvm(Node Version Manager)是管理多版本 Node.js 的最佳工具。如果尚未安装 nvm,先安装它。
Linux / macOS:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
Windows:
Windows 用户应使用 nvm-windows,从其 GitHub Releases 页面下载安装包。
安装 nvm 后,安装并切换到 Node.js 22:
nvm install 22
nvm use 22
nvm alias default 22
验证版本已切换:
node -v
# 应输出 v22.x.x
npm -v
# 应输出 10.x.x
然后重新安装 OpenClaw:
npm install -g openclaw
方案二:使用 fnm 替代 nvm
fnm(Fast Node Manager)是一个更快的 Node.js 版本管理工具,用 Rust 编写:
# macOS / Linux
curl -fsSL https://fnm.vercel.app/install | bash
# Windows (PowerShell)
winget install Schniz.fnm
安装后:
fnm install 22
fnm use 22
fnm default 22
方案三:直接下载安装最新 LTS
如果你不需要管理多个 Node.js 版本,可以直接从 Node.js 官网 下载 22.x LTS 版本的安装包,覆盖安装即可。
安装完成后打开新的终端窗口,确认版本:
node -v
常见陷阱
系统中存在多个 Node.js 安装
有时候系统中可能存在多个 Node.js 安装路径。使用以下命令确认你实际使用的是哪一个:
# Linux / macOS
which node
# Windows
where node
如果输出的路径不是你期望的 nvm 管理路径,检查你的 PATH 环境变量,确保 nvm 的路径排在系统自带 Node.js 路径之前。
Docker 环境中的版本问题
如果你在 Docker 中部署 OpenClaw,确保 Dockerfile 中的基础镜像使用了 Node.js 22:
FROM node:22-alpine
不要使用 node:lts 标签,因为 LTS 标签指向的版本可能随时间变化。明确指定大版本号可以避免构建不一致。
CI/CD 管道中的版本配置
在 GitHub Actions 中,确保 setup-node 步骤指定了正确的版本:
- uses: actions/setup-node@v4
with:
node-version: '22'
验证安装成功
升级 Node.js 后,执行以下命令验证 OpenClaw 可以正常工作:
npm install -g openclaw
openclaw --version
openclaw doctor
openclaw doctor 命令会自动检查运行环境,包括 Node.js 版本、必要的系统依赖以及配置文件 ~/.openclaw/openclaw.json 是否存在。如果所有检查都通过,你会看到绿色的确认信息。
如果在升级后仍然遇到问题,尝试清除 npm 缓存后重新安装:
npm cache clean --force
npm install -g openclaw