复现问题描述
在 Vercel 上部署 ObjectStack Studio 后,/api/v1/meta 和 /api/v1/packages 路由依然返回 404,控制台持续报错,前端核心元数据与包列表接口不可用。
客观现象
深度分析
- Hono 路由 catch-all 实际是注册了,但 Vercel path prefix 很可能导致路径未命中
- Vercel 的
/api/[...path].ts 路由和内部 createHonoApp 的 prefix /api/v1 可能双重叠加,或者存在被截断。 - 若请求传递路径为 /v1/meta,但 Hono 注册路径为 /api/v1/meta,则完全无法匹配,直接 404。
- dispatcher.dispatch() 已覆盖 meta/packages 路由,问题多半在于 serverless 环境路径偏移。
- broker shim 挂载虽有实现,但 cold start 时 kernel/app 启动失败未捕获,可能直接甩 500,或者 broker 为 null 抛异常。
- handleMetadata/handlePackages 方法直接 ensureBroker(),一旦 broker 未挂载或初始化失败,会抛 500。
结论
推荐修复与长期方案
- 在 serverless handler 层打印路径/日志,定位请求 path 是否被修正或被截断。
- 梳理 prefix 和 handler注册,防止内部 Hono prefix 与 Vercel catch-all 产生双重前缀或错配。
- kernel/app 的初始化需要更健壮,所有异常都应有日志、并降级到健康提示,不应静默挂死。
- broker shim 强制挂载与 broker 相关依赖初始化需全程校验,并应支持无 broker 降级兼容。
- 补充 Vercel/serverless 路由端到端 e2e 测试用例。
相关分析已在 #930 提供,可附引用。
cc @hotlong
复现问题描述
在 Vercel 上部署 ObjectStack Studio 后,
/api/v1/meta和/api/v1/packages路由依然返回 404,控制台持续报错,前端核心元数据与包列表接口不可用。客观现象
深度分析
/api/[...path].ts路由和内部 createHonoApp 的 prefix/api/v1可能双重叠加,或者存在被截断。结论
推荐修复与长期方案
相关分析已在 #930 提供,可附引用。
cc @hotlong