/** * MSW Mock 服务配置 */ import { setupWorker } from 'msw/browser'; import { handlers } from './handlers/index.js'; // 创建 MSW Worker export const worker = setupWorker(...handlers); /** * 启动 Mock 服务 * @param {Object} options 配置选项 * @returns {Promise} */ export const startMocking = async (options = {}) => { const defaultOptions = { onUnhandledRequest: 'bypass', // 未处理的请求直接通过 quiet: false, // 是否静默模式 ...options, }; // 只在开发环境启动 if (process.env.NODE_ENV === 'development') { try { await worker.start(defaultOptions); if (!defaultOptions.quiet) { console.log('🚀 [MSW] Mock 服务已启动'); console.log('📋 [MSW] 已注册的接口数量:', handlers.length); } return true; } catch (error) { console.error('❌ [MSW] Mock 服务启动失败:', error); return false; } } return false; }; /** * 停止 Mock 服务 */ export const stopMocking = () => { worker.stop(); console.log('🛑 [MSW] Mock 服务已停止'); }; /** * 重置 Mock 服务 */ export const resetMocking = () => { worker.resetHandlers(); console.log('🔄 [MSW] Mock 服务已重置'); }; /** * 动态添加处理器 * @param {Array} newHandlers 新的处理器 */ export const addHandlers = (newHandlers) => { worker.use(...newHandlers); console.log(`➕ [MSW] 已添加 ${newHandlers.length} 个新处理器`); }; // 开发环境下挂载到 window 对象,方便调试 if (process.env.NODE_ENV === 'development') { window.mockService = { start: startMocking, stop: stopMocking, reset: resetMocking, addHandlers, worker, }; }