OpenClaw 公司电脑下的企业防火墙的安装 pnpm install 的避坑指南:彻底解决 libsignal-node GitHub 下载失败问题
适用场景 :在 Windows 环境下安装 OpenClaw 时,因网络策略、安全软件或企业防火墙导致
pnpm install卡在@whiskeysockets/libsignal-node的 GitHub tarball 下载环节。
pnpm build:OpenClaw 安装之(二)指南与避坑实录:从 pnpm install 到 pnpm build 以及成功运行进入OpenClaw界面
OpenClaw 安装之(三)DeepSeek模型接入配置和详细配置参数
背景:官方的 Powershell 快速安装代码无法正常安装
看了好多安装教程,均默认了 wr -useb https://clawd.org.cn/install.ps1 | iex 能正确安装。但是不是的,有些时候安装不了。
如无特殊说明,以下所有代码执行环境均为 window 系统下的powershell
重要:当前文章解决 pnpm install的问题。
要完全安装启动,请参考下一篇
基础环境配置:
(
node或者git没有的先去找安装教程,待正确安装和配置后再来)
1)Node环境
PS D:\Program\OpenClaw> node -v
v24.13.0
PS D:\Program\OpenClaw> npm -v
11.9.0
PS D:\Program\OpenClaw> pnpm -version
10.29.2
2)git环境
支持 git 克隆
一、问题现象
1)快速安装失败
通过官方的快速安装代码 iwr -useb https://clawd.org.cn/install.ps1 | iex 一直报错:
powershell
> iwr -useb https://clawd.org.cn/install.ps1 | iex
GET [https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67](https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67) error (ECONNREFUSED)
...
ECONNREFUSED request to ... failed, reason: connect ECONNREFUSED 20.205.243.165:443
2)git 源码安装
将 https://github.com/openclaw/openclaw 项目 git 克隆到本地。
我在 D:\Program\OpenClaw 文件夹把项目克隆下来,因此源码根目录在 D:\Program\OpenClaw\openclaw 。
执行 pnpm install 时,反复出现以下错误:
powershell
> cd D:\Program\OpenClaw\openclaw
> pnpm install
GET [https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67](https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67) error (ECONNREFUSED)
...
ECONNREFUSED request to ... failed, reason: connect ECONNREFUSED 20.205.243.165:443
但通过 PowerShell 可以正常下载该 URL:
powershell
Invoke-WebRequest -Uri "https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -OutFile test.tar.gz # ✅ 成功
而 Node.js的node test-github.cjs发现执行失败:
js
// 将文件保存成:test-github.cjs,使用 node test-github.cjs 发现执行失败,无法连接文件。
const https = require('https');
console.log('📡 尝试连接 GitHub codeload...');
const req = https.get('https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67', (res) => {
console.log('✅ 成功!状态码:', res.statusCode);
console.log('✅ 正在接收数据...');
let bytes = 0;
res.on('data', (chunk) => {
bytes += chunk.length;
if (bytes > 10240) { // 收到 10KB 就停止
console.log(`✅ 已接收 ${bytes} 字节,测试成功`);
res.destroy();
}
});
res.on('end', () => {
console.log('✅ 连接正常关闭');
});
});
req.on('error', (e) => {
console.error('❌ 连接失败:', e.message);
console.error('错误代码:', e.code);
});
req.setTimeout(10000, () => {
console.error('❌ 超时');
req.destroy();
});
🔍 初步结论
- 网络本身可达(PowerShell 能下)
- Node.js 进程被本地安全软件(如火绒、Windows Defender)拦截
- 不是代理或 DNS 问题
二、实测解决方案:Patch Baileys 源码,彻底移除 GitHub 依赖
✅ 核心思想
- 不依赖
overrides - 不依赖 lockfile hack
- 直接修改
baileys的package.json,将其对libsignal的依赖从 GitHub URL 改为版本号 - 用
file:协议本地引用 patched 包
步骤详解
若网页下载不了可以直接下载文章附件,解压至D:\Program\OpenClaw\openclaw。下载绑定资源后,可跳过:Step1,Step2,Step3,Step4。
Step 1:下载 Baileys 的 npm tarball
powershell
Invoke-WebRequest -Uri "https://registry.npmjs.org/@whiskeysockets/baileys/-/baileys-7.0.0-rc.9.tgz" -OutFile baileys.tgz
💡 从 npm registry 下载,而非 GitHub,通常不受拦截。
网页下载不了可以直接
下载文章附件,解压至D:\Program\OpenClaw\openclaw。下载后绑定资源后,Step1,Step2,Step3,Step4无需再操作。
Step 2:解压到本地目录
- 使用 7-Zip 或 PowerShell 解压:
powershell
mkdir patched-baileys
tar -xzf baileys.tgz -C patched-baileys --strip-components=1
- 确保
patched-baileys/package.json存在(D:\Program\OpenClaw\openclaw\patched-baileys\package.json)
Step 3:修改 libsignal 依赖声明
编辑 patched-baileys/package.json:
将原 "libsignal": "xxxx" 修改为:"libsignal": "^2.0.1"
具体版本号通过 D:\Program\OpenClaw\openclaw\local_deps\libsignal-node\package.json > "Version"的值来定(Step 4下载文件后会出现)
diff
{
"name": "@whiskeysockets/baileys",
"version": "7.0.0-rc.9",
"dependencies": {
...
- "libsignal": "@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67",
+ "libsignal": "^2.0.1"
}
}
⚠️ 注意:
libsignal是baileys内部对@whiskeysockets/libsignal-node的别名,这是合法的
Step 4:准备本地 libsignal-node
下载 libsignal-node 。并将其解压至 D:\Program\OpenClaw\openclaw\local_deps
powershell
# powershell 执行
# 1. 切换到指定工作目录
cd D:\Program\OpenClaw\openclaw
# 2. 下载指定的tar.gz压缩包(覆盖已存在的同名文件)
Invoke-WebRequest -Uri "https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -OutFile test.tar.gz -UseBasicParsing
# 3. 创建父级目录local_deps(如果不存在则创建,存在则不报错)
New-Item -ItemType Directory -Path "local_deps" -Force
# 4. 解压tar.gz压缩包到当前目录(Windows 10/11自带tar命令,兼容tar.gz)
# 解压后会生成目录:libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67
tar -xf test.tar.gz
# 5. 将解压后的长名称目录重命名为libsignal-node
# 先检查目录是否存在,避免重命名失败
if (Test-Path "libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67") {
Rename-Item -Path "libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -NewName "libsignal-node" -Force
# 6. (可选)将重命名后的目录移动到local_deps(作为父级目录)
# 如果不需要移动,注释掉下面这行即可
Move-Item -Path "libsignal-node" -Destination "local_deps/" -Force
} else {
Write-Host "错误:解压后的目录不存在,请检查下载或解压是否成功!"
}
# (可选)删除下载的压缩包,节省空间
Remove-Item -Path "test.tar.gz" -Force
若下载不了,请下载附件直接解压至
D:\Program\OpenClaw\openclaw
确保 local_deps/libsignal-node/package.json 内容正确:
json
{
"name": "@whiskeysockets/libsignal-node",
"version": "2.0.1",
...
}
Step 5:修改根 package.json
D:\Program\OpenClaw\openclaw\package.json
json
{ ...,
"pnpm": {
"overrides": {
// 新增以下两行,需要删除当前行注释
"@whiskeysockets/baileys": "file:./patched-baileys",
"@whiskeysockets/libsignal-node": "file:./local_deps/libsignal-node"
}
}
,...,
}
Step 6:清理并安装
powershell
# 清理旧状态
Get-ChildItem -Recurse -Filter node_modules | Remove-Item -Recurse -Force
Get-ChildItem -Recurse -Filter pnpm-lock.yaml | Remove-Item
# 安装
pnpm install
✅ 最终结果
powershell
PS D:\Program\OpenClaw\openclaw> pnpm install
Scope: all 34 workspace projects
WARN Tarball download average speed 26 KiB/s (size 31 KiB) is below 50 KiB/s: https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz (GET)
WARN 11 deprecated subdependencies found: are-we-there-yet@3.0.1, form-data@2.5.4, gauge@4.0.4, glob@10.5.0, har-validator@5.1.5, has-own@1.0.1, node-domexception@1.0.0, npmlog@6.0.2, request-promise@4.2.6, request@2.88.2, uuid@3.4.0
Packages: +967
.....
.....
+ typescript 5.9.3
+ vitest 4.0.18
╭ Warning ───────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Ignored build scripts: core-js. │
│ Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts. │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
Done in 49.2s using pnpm v10.23.0
- 所有 34 个 workspace 项目成功安装
- 无任何 GitHub 网络请求
baileys正常加载本地libsignal-node- 后续开发可完全离线进行
接下来:OpenClaw 安装之(二)指南与避坑实录:从 pnpm install 到 pnpm build 以及成功运行进入OpenClaw界面
附录:根目录package.json的主要改动后的代码
D:\Program\OpenClaw\openclaw\package.json
json
{
....,
"pnpm": {
"minimumReleaseAge": 2880,
"overrides": {
"fast-xml-parser": "5.3.4",
"form-data": "2.5.4",
"@hono/node-server\u003ehono": "4.11.8",
"hono": "4.11.8",
"qs": "6.14.1",
"@sinclair/typebox": "0.34.48",
"tar": "7.5.7",
"tough-cookie": "4.1.3",
"@whiskeysockets/baileys": "file:./patched-baileys",
"@whiskeysockets/libsignal-node": "file:./local_deps/libsignal-node"
},
"onlyBuiltDependencies": [
"@lydell/node-pty",
"@matrix-org/matrix-sdk-crypto-nodejs",
"@napi-rs/canvas",
"@whiskeysockets/baileys",
"authenticate-pam",
"esbuild",
"node-llama-cpp",
"protobufjs",
"sharp"
]
}
}