import { createApp } from 'vue' import { createPinia } from 'pinia' import { createPersistedState } from 'pinia-plugin-persistedstate' import 'vant/lib/index.css' import './styles/vant-overrides.css' import App from './App.vue' import router from './router' import { useAppStore } from '@/stores/app' import { apiConfig, appEnv } from '@/config/env' const app = createApp(App) const pinia = createPinia() const appEnvironment = appEnv.toLowerCase() const viteMode = import.meta.env.MODE.toLowerCase() const piniaPersistenceScope = appEnvironment === viteMode ? appEnvironment : `${appEnvironment}:${viteMode}` pinia.use( createPersistedState({ // Web Storage 不按 URL 路径隔离;MODE 额外区分 VITE_APP_ENV 相同的 dev/earth2sit。 key: (storeKey) => `mini2:${piniaPersistenceScope}:${storeKey}`, }), ) app.use(pinia) app.use(router) // 等待原生环境检测完成后再挂载,确保所有组件读到的 isNative 都是正确值 const appStore = useAppStore() await appStore.initNativeDetection() console.log('[应用启动] 当前运行环境', { 当前环境: appEnv, 是否原生环境: appStore.isNative, 环境说明: appStore.isNative ? '当前是敏行原生环境' : '当前不是敏行原生环境', 运行模式: import.meta.env.MODE, 接口BaseUrl: apiConfig.baseURL, 请求超时时间: apiConfig.timeout, 应用版本: __APP_VERSION__, }) app.mount('#app') // SIT 环境 + 原生设备:页面挂载后再加载调试面板,避免额外阻塞首屏。 if (appEnv === 'SIT' && appStore.isNative) { void import('eruda') .then(({ default: eruda }) => { eruda.init() eruda.get('console').config.set('jsExecution', true) const setAnnouncementSwitchVisible = (visible = true) => { appStore.setShowAnnouncementSwitchSetting(visible) return visible } // 隐藏功能继续挂载到 m2 下。 Object.assign(window, { m2: { notice: setAnnouncementSwitchVisible, }, }) }) .catch((error) => { console.error('[应用启动] Eruda 加载失败', error) }) }