Files
vf_react/src/mocks/browser.js

62 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 已重置');
}