From 6f0348ad8765b4a71edb399d665834cec4cc9d56 Mon Sep 17 00:00:00 2001 From: sitns <155474784+sitns@users.noreply.github.com> Date: Sun, 20 Sep 2026 12:15:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(exports):=20=E5=AF=BC=E5=87=BA=20./package.?= =?UTF-8?q?json=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8C=85=E5=AE=BF?= =?UTF-8?q?=E4=B8=BB=E4=B8=8A=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=8D=8A=E5=8C=BA?= =?UTF-8?q?=E8=A2=AB=E9=9D=99=E9=BB=98=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `@deepseek-ai/dsh-client-modules` 的宿主半区在 `locatePkgJson()` 里定位 loader 条目的包清单。Loader 未提供内部 `resolveSync` 时(DSH Desktop 这类打包宿主走的就是 这条回退分支)它调用: createRequire(baseUrl).resolve('/package.json') 本包的 `exports` 只导出 `.` 与 `./client`,该解析抛 `ERR_PACKAGE_PATH_NOT_EXPORTED` → `locatePkgJson` 返回 `undefined` → `resolveMeta()` 返回 `null` → `processOne()` 把这行当作「未声明 dsh.client」 **静默跳过**(不抛错、不告警)。后果: - 宿主半区照常激活(`inject = ['webServer']` 满足),启动审计 `assertEntriesActivated` 也通过,宿主日志无任何相关记录; - `/plugins/?id=dsh-ide-git&rev=…` 返回 404,客户端半区从未下发, 浏览器控制台一片干净; - better-sidebar 的 `+` 新建标签页与原生右侧栏 Guide 页都看不到入口。 对照同 profile 的其它插件:`dsh-scratchpad`、`dsh-better-sidebar` 的 `exports` 都带有 `"./package.json": "./package.json"`,所以不受影响。 复现(用 DSH 自带的组合器真实代码跑 `resolveMeta`,`ctx.loader.internal` 为 undefined 即回退分支): no-internal | dsh-ide-git => NULL (silently skipped) no-internal | dsh-scratchpad => OK no-internal | dsh-better-sidebar => OK 补上该导出后两条件码路径均正常,`clientPath` 解析到 `src/client.js`。 环境:DSH 0.1.5-rc.2(DSH Desktop 2.0.13,Windows 11)、宿主 Node v24.18.1、 dsh-ide-git 0.5.5、npm 安装。 Refs: KannaKuron/dsh-ide-git#1 --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 98db798..0b5231a 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "main": "src/index.js", "exports": { ".": "./src/index.js", - "./client": "./src/client.js" + "./client": "./src/client.js", + "./package.json": "./package.json" }, "engines": { "node": ">=18", @@ -44,7 +45,7 @@ "LICENSE" ], "scripts": { - "test": "node --test tests/smoke.mjs tests/api.test.mjs tests/graph.test.mjs", + "test": "node --test tests/smoke.mjs tests/api.test.mjs tests/graph.test.mjs tests/repos.test.mjs", "version": "node -e \"const fs=require('fs');const m=JSON.parse(fs.readFileSync('dsh.plugin.json','utf8'));const v=JSON.parse(fs.readFileSync('package.json','utf8')).version;m.version=v;fs.writeFileSync('dsh.plugin.json',JSON.stringify(m,null,2)+'\\n')\" && git add dsh.plugin.json" }, "keywords": [