error handle
This commit is contained in:
62
src/main.ts
62
src/main.ts
@@ -1,22 +1,16 @@
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import { naiveUi } from '@/common/naive-ui/components.ts'
|
||||
import { SystemServiceIntegration } from '@/services/SystemServiceIntegration'
|
||||
import { registerBuiltInApps } from '@/apps'
|
||||
import { systemBootstrapper } from '@/services/di/SystemBootstrapper'
|
||||
import { ServiceProvider } from '@/services/di/ServiceProvider'
|
||||
import { ServiceIds } from '@/services/di/ServiceRegistry'
|
||||
|
||||
import 'virtual:uno.css'
|
||||
import './css/basic.css'
|
||||
|
||||
import App from './ui/App.vue'
|
||||
|
||||
// 注册内置应用
|
||||
registerBuiltInApps()
|
||||
|
||||
// 初始化系统服务
|
||||
const systemService = new SystemServiceIntegration({
|
||||
debug: import.meta.env.DEV
|
||||
})
|
||||
|
||||
// 创建应用实例
|
||||
const app = createApp(App)
|
||||
|
||||
@@ -24,38 +18,58 @@ const app = createApp(App)
|
||||
app.use(createPinia())
|
||||
app.use(naiveUi)
|
||||
|
||||
// 提供系统服务给组件使用
|
||||
app.provide('systemService', systemService)
|
||||
// 全局错误处理
|
||||
app.config.errorHandler = (error, instance, info) => {
|
||||
console.error('Vue应用错误:', error, info)
|
||||
}
|
||||
|
||||
// 初始化系统服务然后挂载应用
|
||||
systemService
|
||||
.initialize()
|
||||
.then(() => {
|
||||
// 启动应用函数
|
||||
async function startApplication() {
|
||||
try {
|
||||
// 注册内置应用
|
||||
registerBuiltInApps()
|
||||
|
||||
console.log('正在启动桌面系统...')
|
||||
|
||||
// 使用系统启动器初始化依赖注入系统和所有服务
|
||||
const success = await systemBootstrapper.bootstrap({
|
||||
debug: import.meta.env.DEV,
|
||||
autoCleanup: true
|
||||
})
|
||||
|
||||
if (!success) {
|
||||
throw new Error('系统启动失败')
|
||||
}
|
||||
|
||||
// 获取系统服务并提供给Vue应用
|
||||
const systemService = ServiceProvider.getSystemService()
|
||||
app.provide('systemService', systemService)
|
||||
|
||||
// 挂载应用
|
||||
app.mount('#app')
|
||||
console.log('桌面系统启动完成')
|
||||
})
|
||||
.catch((error) => {
|
||||
|
||||
} catch (error) {
|
||||
console.error('系统启动失败:', error)
|
||||
// 显示错误信息
|
||||
document.body.innerHTML = `
|
||||
<div style="display: flex; justify-content: center; align-items: center; height: 100vh; font-family: sans-serif;">
|
||||
<div style="text-align: center; color: #e74c3c;">
|
||||
<h1>系统启动失败</h1>
|
||||
<p>错误信息: ${error.message}</p>
|
||||
<p>错误信息: ${error instanceof Error ? error.message : '未知错误'}</p>
|
||||
<button onclick="location.reload()" style="padding: 10px 20px; margin-top: 20px; cursor: pointer;">
|
||||
重新加载
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
})
|
||||
|
||||
// 全局错误处理
|
||||
app.config.errorHandler = (error, instance, info) => {
|
||||
console.error('Vue应用错误:', error, info)
|
||||
}
|
||||
}
|
||||
|
||||
// 启动应用
|
||||
startApplication()
|
||||
|
||||
// 在页面卸载时清理系统服务
|
||||
window.addEventListener('beforeunload', () => {
|
||||
systemService.shutdown()
|
||||
systemBootstrapper.shutdown()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user