dsh 在 Node < 22.18 上静默失效:CLI 入口被 import.meta.main 门控(所有命令无输出、退出码 0) #6341
moonquake2004
started this conversation in
General
Replies: 1 comment
Confirmation for
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
症状
npm install -g @deepseek-ai/dsh安装成功,但之后任何命令都零输出:关键判据:连
--version都静默。node-pty 缺失、.env被建成目录、端口占用、bundle/patch 问题都会打印错误或堆栈——只有 CLI 入口根本没执行,才会连--version都零输出。Windows(cmd) 与 zsh 上表现一致,与安装是否完整无关。(症状最初由 #6305 的两位报告者复现。)
机制
发布版
@deepseek-ai/dsh@0.1.5-rc.1的lib/bin.js末尾:import.meta.main是较新的 Node API,旧版本上是undefined→ 条件恒假 → 整个 CLI 主体从不执行 → 零输出、退出码 0、所有子命令一致。同一台机器、同一份发布版
bin.js,实测:而发布的
package.json没有engines字段(monorepo 根声明的是^22.19.0 || >=24.0.0)→ npm 安装时不警告、不拒绝,用户完全无从察觉。处置
用户侧:把 Node 升到 22.18+ 或 24 LTS 即可,不需要重装 dsh。先确认两件事:
上游侧(两点建议):
package.json补engines(把 monorepo 根已有的^22.19.0 || >=24.0.0带下去就够),让 npm 在安装期就警告;import.meta.main(或加显式守卫 + 明确报错),避免旧 Node 上出现"安装成功但完全静默"这种最难排查的形态。离线自查
npx @moonquake2004/dsh-doctor --env --json—— 其中 E3-node 会把 PATH 上的 node 与^22.19.0 || >=24.0.0比对并最先报红;E1-node 查 node 是否在 PATH;目录检查 E7 查dsh是否在 PATH。这类"命令存在但不可用"的环境问题,正是离线检查能在启动前拦下的。All reactions