// src/mocks/browser.js // 浏览器环境的 MSW Worker import { setupWorker } from 'msw/browser'; import { handlers } from './handlers'; // 创建 Service Worker 实例 export const worker = setupWorker(...handlers); // 启动 Mock Service Worker export async function startMockServiceWorker() { // 只在开发环境且 REACT_APP_ENABLE_MOCK=true 时启动 const shouldEnableMock = process.env.REACT_APP_ENABLE_MOCK === 'true'; if (!shouldEnableMock) { console.log('[MSW] Mock 已禁用 (REACT_APP_ENABLE_MOCK=false)'); return; } try { await worker.start({ // 不显示未拦截的请求警告(可选) onUnhandledRequest: 'bypass', // 自定义 Service Worker URL(如果需要) serviceWorker: { url: '/mockServiceWorker.js', }, // 静默模式(不在控制台打印启动消息) quiet: false, }); console.log( '%c[MSW] Mock Service Worker 已启动 🎭', 'color: #4CAF50; font-weight: bold; font-size: 14px;' ); console.log( '%c提示: 所有 API 请求将使用本地 Mock 数据', 'color: #FF9800; font-size: 12px;' ); console.log( '%c要禁用 Mock,请设置 REACT_APP_ENABLE_MOCK=false', 'color: #2196F3; font-size: 12px;' ); } catch (error) { console.error('[MSW] 启动失败:', error); } } // 停止 Mock Service Worker export function stopMockServiceWorker() { worker.stop(); console.log('[MSW] Mock Service Worker 已停止'); } // 重置所有 Handlers export function resetMockHandlers() { worker.resetHandlers(); console.log('[MSW] Handlers 已重置'); }