Compare commits

...

2 Commits

Author SHA1 Message Date
zdl
9bb9eab922 fix(MSW): Bytedesk 添加 mock 数据响应
- 未读消息数量返回 { count: 0 }
- 其他 API 返回通用成功响应
- 解决 mock 模式下 404 错误

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-17 16:41:45 +08:00
zdl
3d7b0045b7 fix(NotificationContext): Mock 模式下跳过 Socket 连接
- 添加 REACT_APP_ENABLE_MOCK 环境变量检查
- Mock 模式下直接 return,避免连接生产服务器失败的错误
- 消除开发环境控制台的 WebSocket 连接错误

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-17 16:34:44 +08:00
2 changed files with 23 additions and 5 deletions

View File

@@ -661,6 +661,12 @@ export const NotificationProvider = ({ children }) => {
// ========== 连接到 Socket 服务(⚡ 异步初始化,不阻塞首屏) ========== // ========== 连接到 Socket 服务(⚡ 异步初始化,不阻塞首屏) ==========
useEffect(() => { useEffect(() => {
// ⚡ Mock 模式下跳过 Socket 连接(避免连接生产服务器失败的错误)
if (process.env.REACT_APP_ENABLE_MOCK === 'true') {
logger.debug('NotificationContext', 'Mock 模式,跳过 Socket 连接');
return;
}
// ⚡ 防止 React Strict Mode 导致的重复初始化 // ⚡ 防止 React Strict Mode 导致的重复初始化
if (socketInitialized) { if (socketInitialized) {
logger.debug('NotificationContext', 'Socket 已初始化跳过重复执行Strict Mode 保护)'); logger.debug('NotificationContext', 'Socket 已初始化跳过重复执行Strict Mode 保护)');

View File

@@ -1,16 +1,28 @@
// src/mocks/handlers/bytedesk.js // src/mocks/handlers/bytedesk.js
/** /**
* Bytedesk 客服 Widget MSW Handler * Bytedesk 客服 Widget MSW Handler
* 使用 passthrough 让请求通过到真实服务器,消除 MSW 警告 * Mock 模式下返回模拟数据
*/ */
import { http, passthrough } from 'msw'; import { http, HttpResponse, passthrough } from 'msw';
export const bytedeskHandlers = [ export const bytedeskHandlers = [
// Bytedesk API 请求 - 直接 passthrough // 未读消息数量
// 匹配 /bytedesk/* 路径(通过代理访问后端) http.get('/bytedesk/visitor/api/v1/message/unread/count', () => {
return HttpResponse.json({
code: 200,
message: 'success',
data: { count: 0 },
});
}),
// 其他 Bytedesk API - 返回通用成功响应
http.all('/bytedesk/*', () => { http.all('/bytedesk/*', () => {
return passthrough(); return HttpResponse.json({
code: 200,
message: 'success',
data: null,
});
}), }),
// Bytedesk 外部 CDN/服务请求 // Bytedesk 外部 CDN/服务请求