Skip to content

[Bug] 安装失败:preinstall 引用了未打包的 scripts/setup-mirror.mjs(package.json files 漏了 scripts/) #74

Description

@oshunter

问题

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.5tar 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。)

建议修改

任选其一即可:

  1. scripts 加入 files(最小改动):
"files": ["bin", "dist", "scripts", "README.md", "LICENSE", ".env.example"]
  1. 或移除/容错 preinstallsetup-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/ 同样没打进包,建议一并核对发布内容。

感谢维护这个项目 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions