import { createApp } from 'vue' import pinia from "./stores/index"; import router from "./router"; import './style.css' import App from './App.vue' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import { lissenLog, log } from './utils/log' import useUserInfo from './stores/modules/user' import { startGenerateServer } from './utils/generateServer' import { updateHttpConfig } from './utils/http' import client from './stores/modules/client' import icpList from './utils/ipc' // 初始化应用配置 function initializeAppConfig() { try { // 获取应用配置 const clientStore = client(); clientStore.ipc.send(icpList.utils.getAppConfig); clientStore.ipc.once(icpList.utils.getAppConfig, (event, result) => { console.log('应用配置已加载:', result); // 设置HTTP配置 if (result && (result as any).env) { updateHttpConfig((result as any).env); } else { // 如果没有配置,使用默认环境 updateHttpConfig('prod'); } }); } catch (error) { console.warn('获取应用配置失败,使用默认配置:', error); // 使用默认环境 updateHttpConfig('prod'); } } const app = createApp(App) app.use(ElementPlus) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } app.use(pinia) app.use(router) // 注册埋点指令和路由监听 - 确保在router使用后立即注册 lissenLog(app) log(router) app.mount('#app') // 应用挂载后初始化应用配置 initializeAppConfig() // 刷新后根据会话标记显示登录弹窗 try { const flag = sessionStorage.getItem('NEED_LOGIN_MODAL') if (flag) { const userStore = useUserInfo() userStore.updateLoginShow(true) sessionStorage.removeItem('NEED_LOGIN_MODAL') } } catch {} // 启动本地生成服务(仅在 Electron 的 Node 集成环境有效) try { startGenerateServer() } catch (e) { console.warn('[generateServer] failed to start', e) }