问题描述
在 monorepo 根目录运行 pnpm dev 启动开发环境后,无法访问 http://localhost:3000/api/v1/auth/get-session 等 Auth 服务接口。
- 实际结果:返回 404,未注册 auth 路由。
- 期望结果:可访问
api/v1/auth/* 系列接口,正常获取 session。
复现步骤
pnpm dev- 打开浏览器访问
http://localhost:3000/api/v1/auth/get-session - 出现 404 或无法连接
根因分析
objectstack.config.ts 的 plugins 数组中,AuthPlugin 在 HonoServerPlugin 之前注册。- CLI 的
serve 命令会先注册所有 config.plugins,然后最后才注册 HonoServerPlugin,导致 AuthPlugin 的路由注册时获取不到 HTTP 服务实例。 - AuthPlugin.start() 检测不到 http-server,打印 warn:
No HTTP server available — auth routes not registered.
相关代码片段
import{defineStack}from'@objectstack/spec';import{AppPlugin,DriverPlugin}from'@objectstack/runtime';import{ObjectQLPlugin}from'@objectstack/objectql';import{InMemoryDriver}from'@objectstack/driver-memory';import{HonoServerPlugin}from'@objectstack/plugin-hono-server';// ← 新增importCrmAppfrom'./examples/app-crm/objectstack.config';importTodoAppfrom'./examples/app-todo/objectstack.config';importBiPluginfrom'./examples/plugin-bi/objectstack.config';import{AuthPlugin}from'@objectstack/plugin-auth';exportdefaultdefineStack({manifest: {id: 'dev-workspace',name: 'dev_workspace',version: '0.0.0',description: 'ObjectStack monorepo development workspace',type: 'app',},plugins: [newObjectQLPlugin(),newDriverPlugin(newInMemoryDriver()),newHonoServerPlugin({port: 3000}),// ← 必须在 AuthPlugin 之前newAuthPlugin({secret: 'dev-secret-please-change-in-production-min-32-chars',baseUrl: 'http://localhost:3000',}),newAppPlugin(CrmApp),newAppPlugin(TodoApp),newAppPlugin(BiPlugin),],});建议修复方案
- 优先注册 HonoServerPlugin ——
objectstack.config.ts 的 plugins 数组必须先注册 HTTP 服务,再注册 AuthPlugin。 - CLI 应在遍历 config.plugins 之前注册 HonoServerPlugin。(或检测是否重复注册,避免多次实例化)
- AuthPlugin 可用
kernel:ready hook 延迟注册路由,兼容不同插件加载顺序。
问题描述
在 monorepo 根目录运行
pnpm dev启动开发环境后,无法访问http://localhost:3000/api/v1/auth/get-session等 Auth 服务接口。api/v1/auth/*系列接口,正常获取 session。复现步骤
pnpm devhttp://localhost:3000/api/v1/auth/get-session根因分析
objectstack.config.ts的plugins数组中,AuthPlugin在HonoServerPlugin之前注册。serve命令会先注册所有config.plugins,然后最后才注册HonoServerPlugin,导致AuthPlugin的路由注册时获取不到 HTTP 服务实例。No HTTP server available — auth routes not registered.相关代码片段
建议修复方案
objectstack.config.ts的plugins数组必须先注册 HTTP 服务,再注册 AuthPlugin。kernel:readyhook 延迟注册路由,兼容不同插件加载顺序。