问题: 访问 /chat-test 仍然被重定向到 /login
诊断时间: 2026-04-10 15:50
// commonRoutes 中包含 /chat-test
{
path: '/chat-test',
element: lazyLoad(() => import('@/pages/test/ChatTestPage.tsx')),
}
const whiteList = ['/login', '/chat-test', '/help', '/mobile-test', '/universalChat'];
// 第 207-208 行
if (whiteList.includes(path)) {
return <>{component}</> // 应该直接返回组件
}
现状:
const router = createBrowserRouter([...routerList, ...commonRoutes]);
分析:
routerList 在前,commonRoutes 在后routerList 包含根路径 / 和 index: true 重定向/chat-test 被根路径逻辑拦截验证方法:
http://localhost:3100/chat-testpath 值分析:
RouterComponent 包装else 分支/login验证方法:
🔍 RouterComponent 被调用 日志isWhiteList 是否为 true可能位置:
src/pages/layout/index.tsx - 布局组件src/App.tsx - 应用根组件src/main.tsx - 入口文件排查结果:
App.tsx - 无守卫逻辑main.tsx - 无守卫逻辑layout/index.tsx - 待检查分析:
LocalStorage.getToken() 可能返回 undefined验证方法:
访问测试页面前,在控制台执行:
localStorage.setItem('token', 'test-token');
刷新页面,观察是否仍然重定向
访问:http://localhost:3100/debug (待添加路由)
功能:
已添加的调试日志:
console.log('🔍 RouterComponent 被调用:', {
path,
whiteList,
isWhiteList: whiteList.includes(path),
hasToken: !!LocalStorage.getToken(),
hasUserInfo: !!localStorage.getItem('userInfo'),
});
# 在浏览器中
Ctrl + Shift + Delete (Windows)
Cmd + Shift + Delete (Mac)
rm -rf node_modules/.vite
# 停止当前服务器
Ctrl + C
# 重新启动
npm run dev
http://localhost:3100/chat-test🔍 RouterComponent 日志path 的值isWhiteList 是否为 truehasToken 和 hasUserInfo 的值// 将 commonRoutes 放在前面
const router = createBrowserRouter([...commonRoutes, ...routerList]);
// 测试页面直接返回,不经过登录检查
if (path === '/chat-test') {
console.log('✅ 测试页面,直接返回');
return <>{component}</>;
}
// 注释掉整个 RouterComponent 逻辑
route.element = component; // 直接返回组件,不包装
请执行以下操作:
http://localhost:3100/chat-test🔍 RouterComponent 日志内容path 和 isWhiteList 值根据日志内容, 我可以精确定位问题所在!
诊断报告生成完毕 - 等待用户反馈调试日志