diff --git a/server/app.tsx b/server/app.tsx index 6a35813..e9f0740 100644 --- a/server/app.tsx +++ b/server/app.tsx @@ -226,7 +226,7 @@ export type WithAuth = typeof withAuth; // 定义模块参数接口 interface ModuleParams { apiClient: APIClient - app: Hono<{ Variables: Variables }> + app: Hono moduleDir: string } diff --git a/server/run.ts b/server/run.ts new file mode 100644 index 0000000..427503b --- /dev/null +++ b/server/run.ts @@ -0,0 +1,81 @@ +// 导入所需模块 +import { Hono } from 'hono' +import { APIClient } from '@d8d-appcontainer/api' +import debug from "debug" +import { cors } from 'hono/cors' + +// 初始化debug实例 +const log = { + app: debug('app:server'), + auth: debug('auth:server'), + api: debug('api:server'), + debug: debug('debug:server') +} + +// 启用所有日志 +Object.values(log).forEach(logger => logger.enabled = true) + +// 初始化 API Client +const getApiClient = async (workspaceKey: string, serverUrl?: string) => { + try { + log.api('正在初始化API Client实例') + + const apiClient = await APIClient.getInstance({ + scope: 'user', + config: { + serverUrl: serverUrl || Deno.env.get('SERVER_URL') || 'https://app-server.d8d.fun', + workspaceKey: workspaceKey, + type: 'http', + } + }) + + log.api('API Client初始化成功') + return apiClient + } catch (error) { + log.api('API Client初始化失败:', error) + throw error + } +} + +// 创建Hono应用实例 +const app = new Hono() + +// 注册CORS中间件 +app.use('/*', cors()) + +// 动态加载并运行模板 +const runTemplate = async () => { + try { + // 创建基础app实例 + const moduleApp = new Hono() + + // 初始化API Client + // 注意:WORKSPACE_KEY 需要在 多八多(www.d8d.fun) 平台注册并开通工作空间后获取 + const workspaceKey = Deno.env.get('WORKSPACE_KEY') || '' + if (!workspaceKey) { + console.warn('未设置WORKSPACE_KEY,请前往 多八多(www.d8d.fun) 注册并开通工作空间以获取密钥') + } + const apiClient = await getApiClient(workspaceKey) + + // 导入模板主模块 + const templateModule = await import('./app.tsx') + + if (templateModule.default) { + // 传入必要参数并初始化应用 + const appInstance = templateModule.default({ + apiClient: apiClient, + app: moduleApp, + moduleDir: './admin-mobile-starter' + }) + + // 启动服务器 + Deno.serve({ port: 8000 }, appInstance.fetch) + console.log('应用已启动,监听端口: 8000') + } + } catch (error) { + console.error('模板加载失败:', error) + } +} + +// 执行模板 +runTemplate() \ No newline at end of file diff --git a/test.log b/test.log deleted file mode 100644 index 253d994..0000000 --- a/test.log +++ /dev/null @@ -1,54 +0,0 @@ -[测试套件] 知识库管理页面测试 (./client/admin/pages_know_info.test.tsx) - -[测试用例] 应正确渲染页面元素 -- 状态: 通过 -- 耗时: 2.000s - -[测试用例] 初始加载表格数据 -- 状态: 通过 -- 耗时: 0.729s - -[测试用例] 搜索表单应正常工作 -- 状态: 通过 -- 耗时: 1.000s - -[测试用例] 表格应加载并显示数据 -- 状态: 通过 -- 耗时: 0.038s - -[测试用例] 应能打开添加文章模态框 -- 状态: 通过 -- 耗时: 0.298s -- 输出内容: -