问题
npm install -g opencode-bridge(以及 npx -y opencode-bridge)在 preinstall 阶段失败、整个安装中止,包无法装上。这是对所有用户可复现的发布配置问题,与本地环境无关。
环境
- opencode-bridge:
3.1.5(当前 npm latest)
- Node:v22.21.0
- OS:macOS(darwin x64),已安装 Xcode Command Line Tools
复现步骤
npm install -g opencode-bridge
# 或
npx -y opencode-bridge@latest
实际结果
preinstall 脚本以 exit code 1 失败,安装中止。npm debug 日志关键行:
info run opencode-bridge@3.1.5 preinstall node_modules/opencode-bridge node scripts/setup-mirror.mjs
info run opencode-bridge@3.1.5 preinstall { code: 1, signal: null }
报错为 Cannot find module '.../scripts/setup-mirror.mjs',随后 package.json / node_modules 均未落盘,bin 不存在,运行时静默退出。
根因
package.json:
"files": ["bin", "dist", "README.md", "LICENSE", ".env.example"],
"scripts": { "preinstall": "node scripts/setup-mirror.mjs" }
files 决定哪些文件发布到 npm,其中未包含 scripts/;
- 但
preinstall 又去执行 scripts/setup-mirror.mjs;
- 实际验证:
npm pack opencode-bridge@3.1.5 后 tar tzf 解包列表里没有任何 scripts/ 路径,即该脚本根本没进发布的 tarball;
- 于是 preinstall 找不到文件 →
MODULE_NOT_FOUND → exit 1 → 安装中止。
临时绕过(供同样卡住的同学)
npm install -g opencode-bridge --ignore-scripts # 跳过坏掉的 preinstall
npm rebuild --prefix "$(npm root -g)/opencode-bridge" better-sqlite3 # 单独补原生模块
(--ignore-scripts 会同时跳过 better-sqlite3 的 prebuild-install,所以需要上面第二行单独 rebuild。)
建议修改
任选其一即可:
- 把
scripts 加入 files(最小改动):
"files": ["bin", "dist", "scripts", "README.md", "LICENSE", ".env.example"]
- 或移除/容错 preinstall:
setup-mirror.mjs 的作用是尽力探测并配置较快的镜像源,其 catch 分支本身就是 process.exit(0)(本意是不阻断安装);但因为脚本文件缺失,导致 exit 1,与「不阻断」的设计意图相反。可让 preinstall 对缺失/失败容错,或改为首次运行时再配置镜像。
附带:dist/scripts/process-manager.mjs 也缺失
启动时另有:
Cannot find module '.../dist/scripts/process-manager.mjs'
[Index] OpenCode 自动启动失败,退出码: 1(将继续启动 Bridge)
非致命(若 OpenCode 已在运行则不受影响),但看起来 dist/scripts/ 同样没打进包,建议一并核对发布内容。
感谢维护这个项目 🙏
问题
npm install -g opencode-bridge(以及npx -y opencode-bridge)在 preinstall 阶段失败、整个安装中止,包无法装上。这是对所有用户可复现的发布配置问题,与本地环境无关。环境
3.1.5(当前 npm latest)复现步骤
npm install -g opencode-bridge # 或 npx -y opencode-bridge@latest实际结果
preinstall 脚本以 exit code 1 失败,安装中止。npm debug 日志关键行:
报错为
Cannot find module '.../scripts/setup-mirror.mjs',随后package.json/node_modules均未落盘,bin 不存在,运行时静默退出。根因
package.json:files决定哪些文件发布到 npm,其中未包含scripts/;preinstall又去执行scripts/setup-mirror.mjs;npm pack opencode-bridge@3.1.5后tar tzf解包列表里没有任何scripts/路径,即该脚本根本没进发布的 tarball;MODULE_NOT_FOUND→ exit 1 → 安装中止。临时绕过(供同样卡住的同学)
(
--ignore-scripts会同时跳过better-sqlite3的 prebuild-install,所以需要上面第二行单独 rebuild。)建议修改
任选其一即可:
scripts加入files(最小改动):setup-mirror.mjs的作用是尽力探测并配置较快的镜像源,其catch分支本身就是process.exit(0)(本意是不阻断安装);但因为脚本文件缺失,导致 exit 1,与「不阻断」的设计意图相反。可让 preinstall 对缺失/失败容错,或改为首次运行时再配置镜像。附带:
dist/scripts/process-manager.mjs也缺失启动时另有:
非致命(若 OpenCode 已在运行则不受影响),但看起来
dist/scripts/同样没打进包,建议一并核对发布内容。感谢维护这个项目 🙏