Repository navigation
v1.0.1
DSH GitHub Login v1.0.1
修复「安装插件后启动 DSH 直接报错」的问题,并理顺版本线。
根因
package.json 的 name 是无 scope 的 dsh-github-login,安装器也是按这个名字建目录(node_modules/dsh-github-login);但入口导出的 name 与 cordis.patch.yml 里 entry 的 name 却写成了 @deepseek-ai/dsh-github-login。宿主端加载器是按 entry 声明的名字去 import 的,于是去找一个根本不会被创建的目录,启动即失败:
failed to import loader entry github-login (@deepseek-ai/dsh-github-login):
Cannot find package '@deepseek-ai/dsh-github-login' imported from <profile>/
本次修复
cordis.patch.yml的 entryname与入口导出的name都改为真实包名dsh-github-login,三处身份一致(不改package.json的包名,避免破坏已装用户)。- 路由注册改为
ctx.inject(['webServer'], …),等webServer就绪后再挂载,修掉「挂载时ctx.get('webServer')取不到就静默跳过、且无重试」的竞态(/github-auth/*时有时无甚至一直 404)。 - 入口
lib/index.js→lib/index.mjs:显式 ESM 模块类型,不再依赖 Node 的语法探测;main.js/preload.js仍为 CommonJS,桌面工具不受影响。 - 版本
0.1.0→1.0.1,与已发布的v1.0.0标签线对齐。 - 新增
test/identity.test.mjs:把「package.json.name== 入口导出 name ==cordis.patch.ymlentry name」钉成可失败断言(并禁止再使用官方@deepseek-ai/*scope)。已做变异验证:任意一处被改回旧名,测试即失败。
未改动:既有 v1.0.0 标签与 Release 逐字段保持原样,未移动、未删除、未覆盖。
安装 / 升级
- DSH 插件模式:
dsh plugin --profile web add github:Noob-stupid/dsh-github-login - 已装过旧版的用户:重新执行一次上面的安装命令即可(安装器会重新拉取并覆盖)。
- 独立工具:下载下方
DSH-GitHub-Login.exe直接运行(便携单文件,免安装)。
校验
DSH-GitHub-Login.exe.sha256 为对应的 SHA-256:
bdd670c7c6add6a502fcb9ce4abe22a0dc5330b7e6508f4c6d1c8eb73dbb7206 DSH-GitHub-Login.exe
首次运行若被杀软提示,属便携打包工具的常见误报,可核对源码自行构建(npm install && npm run dist)。
致谢
感谢 @dr1am1 与 @TomIsFat 报告该问题(issue #1),以及 @SX2000CN 提交的 PR #3 —— 本次修复的改动方向与 PR #3 一致,其中「入口改 .mjs 显式声明模块类型」「路由改 ctx.inject 等服务就绪」两点亦采用其结论。
说明:PR #3 未能以 GitHub 的「合并」方式入账 —— 该 PR 的 head 仓库(贡献者 fork)已被删除,GitHub 拒绝再对其做状态变更(
state cannot be changed. The repository that submitted this pull request has been deleted.),重新打开被 422 拒绝。因此修复由本仓库按同一方向重新实现,并在提交信息与 Release 中署名致谢。另外,本次验证为「隔离 DSH_HOME + 真实远程安装 + 入口解析 +
--dump-config组树」,未在真实宿主上做一次端到端启动(不重启任何运行中的实例)。