From 506e5a448c3e63c3a76180a50ff35509c43fd928 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Wed, 26 Nov 2025 15:23:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AC=E5=9C=B0=E4=BC=98=E5=85=88?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=9C=8D=E5=8A=A1=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.js | 53 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/src/index.js b/src/index.js index 84dd3555..2521860d 100755 --- a/src/index.js +++ b/src/index.js @@ -119,12 +119,10 @@ function registerServiceWorker() { } } -// 启动应用(MSW 异步初始化,不阻塞首屏渲染) -function startApp() { - // Create root +// 渲染应用 +function renderApp() { const root = ReactDOM.createRoot(document.getElementById('root')); - // ✅ 先渲染应用,不等待 MSW // StrictMode 已启用(Chakra UI 2.10.9+ 已修复兼容性问题) root.render( @@ -139,33 +137,30 @@ function startApp() { ); - // ✅ 后台异步启动 MSW(不阻塞首屏渲染) - if (process.env.NODE_ENV === 'development' && process.env.REACT_APP_ENABLE_MOCK === 'true') { - const initMSW = async () => { - try { - const { startMockServiceWorker } = await import('./mocks/browser'); - await startMockServiceWorker(); - console.log( - '%c[MSW] ✅ Mock Service Worker 已在后台启动', - 'color: #4CAF50; font-weight: bold;' - ); - } catch (error) { - console.error('[MSW] ❌ Mock Service Worker 启动失败:', error); - } - }; - - // 使用 requestIdleCallback 在浏览器空闲时初始化,不阻塞首屏 - if ('requestIdleCallback' in window) { - requestIdleCallback(() => initMSW(), { timeout: 3000 }); - } else { - // 降级:使用 setTimeout(0) 延迟执行 - setTimeout(initMSW, 0); - } - } - - // 注册 Service Worker + // 注册 Service Worker(非 Mock 模式) registerServiceWorker(); } +// 启动应用 +async function startApp() { + // ✅ 开发环境 Mock 模式:先启动 MSW,再渲染应用 + // 确保所有 API 请求(包括 AuthContext.checkSession)都被正确拦截 + if (process.env.NODE_ENV === 'development' && process.env.REACT_APP_ENABLE_MOCK === 'true') { + try { + const { startMockServiceWorker } = await import('./mocks/browser'); + await startMockServiceWorker(); + console.log( + '%c[MSW] ✅ Mock Service Worker 已启动,开始渲染应用', + 'color: #4CAF50; font-weight: bold;' + ); + } catch (error) { + console.error('[MSW] ❌ Mock Service Worker 启动失败,继续渲染应用:', error); + } + } + + // 渲染应用 + renderApp(); +} + // 启动应用 startApp(); \ No newline at end of file