开发者文档/分发与维护

常见问题排查

定位连接失败、服务缺失、开发会话冲突和打包错误。

核对日期:2026 年 9 月 11 日

本页目录

终端找不到 trove#

在 Trove 开发页面安装或检查命令行工具,打开新终端,确认当前选择的可执行文件:

sh
command -v trove
trove --version
trove curio --help

Shell 命令可能指向应用包内部。重新构建另一个本地二进制,不会更新该应用包。先确认注册目标,再判断 CLI 与 Host 是否同一构建。若另一个 Host 可执行文件占用了数据目录,正常退出那个 Host,再使用目标构建重试。

Host Bridge 不可用#

bridge.host_unavailable 表示页面没有 Host 注入的桥接。通过 trove curio dev 或 Trove 中已安装的 Curio 打开页面。普通浏览器只渲染 UI,不提供原生 API;浏览器测试请显式创建 Mock 客户端

bridge.reloaded、bridge.disconnected 表示客户端连接已结束。取消过时的 UI 工作,并建立新的页面或客户端连接。对已显式 disconnect 的客户端再次调用 ready,不能恢复它。

开发无法启动#

sh
trove curio check --json
trove --verbose curio dev
现象检查与恢复
初始化拒绝目录init 要求新目录,空目录也不例外;更换路径或按已有项目指南接入
缺少依赖使用工程选择的包管理器安装,保留 SDK vendor 包
UI 服务等待超时对齐 Manifest URL 和实际端口;动态端口必须读取 TROVE_DEV_PORT
地址被占用停止遗留 UI 进程或换端口;已有服务用 --no-start-ui --ui-url ... 连接
Curio ID 已运行结束该 Curio 的旧开发会话,独立工程使用不同 ID
Host 可执行文件冲突检查 CLI 注册和运行中的 Host,不同可执行文件不能静默接管数据目录

不要通过删除用户数据规避开发冲突。Ctrl-C 只停止当前 CLI 会话,不会退出所有 Host 会话。

请求与服务错误#

Code含义与下一步
request.invalid_params检查 Contract 中的参数名、类型和必需字段
request.invalid_options检查 timeoutMs 为有限数字且在 SDK 范围内
request.timeout查看提供方日志和耗时,只有可安全重复的操作才重试
request.cancelled请求已取消,结束 UI 加载状态,不展示成功结果
service.not_found查询已注册服务,安装或启动目标提供方
service.method_not_found通过 describe 检查方法是否缺失或仍在规划中
service.version_mismatch对齐声明的兼容范围与已安装服务版本
service.contract_violation对照 JSON Contract 检查参数、结果与事件
provider.disconnectedBackend 连接结束,检查进程输出与生命周期
self.unavailable缺少操作所需的 Curio 或 Backend 上下文
host.storage.value_too_large / host.storage.quota_exceeded大型数据改用文件,或减少存储内容

保留 TroveError 的 code、message 和可用的 traceId。retryable 为 true 不代表自动重试。实现功能前查看 Host 能力状态,避免调用规划接口。

开发正常,安装后失败#

对齐 ui.entry 与构建输出,将依赖资源放入 package.files。使用相对资源路径,检查动态 import,在开发服务停止时测试安装版。生产 Manifest 不保留 development.ui.url。

Backend 入口必须是目标平台的真实可执行文件,检查权限、架构和运行依赖。pack --dry-run 不能证明尚未构建的产物有效,应实际执行 pack 并确认成功。

下载返回登录页时,让 Release 附件可以匿名访问。Git 认证只覆盖软件源索引与仓库,不会转发到 HTTP 包下载。

准备有用的复现信息#

记录 Host/CLI 版本、macOS 版本与架构、Curio ID/版本、失败命令、预期与实际行为。复制调试控制台的相关筛选输出,附上能复现的最小 Manifest 或请求,去除密钥和个人数据。

在新的开发会话中重试最小失败步骤。测试与调试解释日志限制,以及 Mock、原生接入与安装包验证的区别。