fix(host): ctx.set 前必须 ctx.provide,否则整个插件树加载失败、DSH 起不来(隔离实例实测复现;修复后正常启动并写出 endpoint.json 与 HTTP 路由)
This commit is contained in:
+8
-2
@@ -261,8 +261,14 @@ export function apply(ctx) {
|
|||||||
}
|
}
|
||||||
const pushHidden = () => broadcast({ type: 'cmd', cmd: 'hide' })
|
const pushHidden = () => broadcast({ type: 'cmd', cmd: 'hide' })
|
||||||
|
|
||||||
// 抓屏前隐藏:给其它插件/工具用的门面(没有消费者时静默)
|
// 抓屏前隐藏的对外门面:交给宿主的共享对象。
|
||||||
ctx.set?.('floatWindow', { hide: pushHidden, show: () => broadcast({ type: 'cmd', cmd: 'show' }), snapshot, endpoint: () => endpointFile })
|
// 注意 cordis 要求先 provide 再 set,否则会抛 "cannot set property ... without provide"
|
||||||
|
// (实测:漏了 provide 会让整个插件树加载失败、DSH 起不来)。这里做成可选的,
|
||||||
|
// 拿不到 provide 就退化成只广播 SSE 命令。
|
||||||
|
try {
|
||||||
|
ctx.provide?.('floatWindow')
|
||||||
|
ctx.set?.('floatWindow', { hide: pushHidden, show: () => broadcast({ type: 'cmd', cmd: 'show' }), snapshot, endpoint: () => endpointFile })
|
||||||
|
} catch (e) { log('floatWindow facade skipped:', String(e?.message || e)) }
|
||||||
|
|
||||||
// ---------------------------------------------------------------- DSH 设置入口
|
// ---------------------------------------------------------------- DSH 设置入口
|
||||||
// 注册一个设置命名空间,DSH 的「设置 → 插件」会把它渲染成一张卡片。
|
// 注册一个设置命名空间,DSH 的「设置 → 插件」会把它渲染成一张卡片。
|
||||||
|
|||||||
Reference in New Issue
Block a user