From e47eb5c662e4c81135ae73ceea31b0bcf905f915 Mon Sep 17 00:00:00 2001 From: engigu Date: Wed, 4 Mar 2026 23:19:13 +0800 Subject: [PATCH] fix: page error load --- web/src/main.ts | 5 +++++ web/src/router/index.ts | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/web/src/main.ts b/web/src/main.ts index 650b0ec..1ea9bed 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -5,6 +5,11 @@ import 'vue-sonner/style.css' import App from './App.vue' import router from './router' +window.addEventListener('vite:preloadError', () => { + console.log('Detected vite preload error. Reloading page...') + window.location.reload() +}) + createApp(App) .use(router) .use(VueMonacoEditorPlugin, { diff --git a/web/src/router/index.ts b/web/src/router/index.ts index 59c2ece..08211bb 100644 --- a/web/src/router/index.ts +++ b/web/src/router/index.ts @@ -79,4 +79,18 @@ router.beforeEach(async (to, _from, next) => { } }) +// 捕获动态导入(Chunk)加载失败异常(部署新版本时发生) +router.onError((error) => { + const isChunkLoadFailed = error.message && error.message.includes('Failed to fetch dynamically imported module') + if (isChunkLoadFailed) { + if (!sessionStorage.getItem('__chunk_reloaded__')) { + sessionStorage.setItem('__chunk_reloaded__', 'true') + window.location.reload() + } else { + console.error('动态模块加载持续失败', error) + sessionStorage.removeItem('__chunk_reloaded__') + } + } +}) + export default router