pnpm方式加载失败及修复全流程已经建议 #2438
white-sand-grand
started this conversation in
General
Replies: 0 comments
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.
事先声明:本次修复由GLM 5.3参与完成并进行总结,但我并不认为是AI废料
标题:
正文:
同一台机器、同一个 profile(
~/.dsh未做任何改动),改用npm i -g @deepseek-ai/dsh(或npx @deepseek-ai/dsh web)则完全正常。报错信息
约 200 个条目以同样方式失败(
dsh-agent、dsh-web-app、dsh-tools、dsh-user-questions、dsh-host-apiproxy等)。完整启动日志可按需提供。根因分析
插件加载器从自身模块位置(
cordis-plugin-loader/lib/index.js)按裸包名解析 bundle 插件包。npm/npx 的扁平提升(hoisted)布局下,
@deepseek-ai/dsh-*系列包位于node_modules顶层、互为邻居,可以正常解析;而 pnpm 默认的隔离布局(isolated layout)中,每个包只能看见自己
声明过的依赖,
cordis-plugin-loader的依赖清单里没有这些兄弟插件包,于是全部导入失败。
也就是说
pnpm add -g能"装成功",但装出来的是一个坏的安装,且报错信息完全不会提示问题出在包管理器上——用户很容易误以为是安装损坏。
临时绕过
npm i -g @deepseek-ai/dsh(需要时配用户前缀目录)或npx @deepseek-ai/dsh web——实测正常。node-linker=hoisted也可行(此处未验证)。建议(任选其一即可帮到用户)
pnpm 的隔离布局暂不支持。
createRequire锚定在@deepseek-ai/dsh包上),从而兼容严格布局。如需完整启动日志或协助验证修复,我可以配合。
All reactions