import { createApp } from "vue"; import App from "./App.vue"; import "./assets/main.css"; import { getAllConfig } from "./host/config"; import { getServerIpFromConfig } from "./utils/noticeConfig"; import { applyServerIpToHttp } from "./utils/service"; import { loadNoticeVideoListOnOpen } from "./api/notice"; import { router } from "./router"; import { log } from "./host/logger"; function withTimeout(promise: Promise, timeoutMs: number): Promise { return new Promise((resolve, reject) => { const timer = setTimeout(() => { reject(new Error(`timeout after ${timeoutMs}ms`)); }, timeoutMs); promise .then((value) => { clearTimeout(timer); resolve(value); }) .catch((error) => { clearTimeout(timer); reject(error); }); }); } async function bootstrap(): Promise { try { const config = await withTimeout(getAllConfig(), 1500); const serverIp = getServerIpFromConfig(config); if (serverIp) { applyServerIpToHttp(serverIp); void loadNoticeVideoListOnOpen().catch(async (error) => { const message = error instanceof Error ? error.message : String(error); await log("warn", `启动时拉取 videolist 失败: ${message}`); }); } } catch { // 配置缺失时由路由守卫引导到设置页 } const app = createApp(App); app.use(router).mount("#app"); } void bootstrap();