使用vite-typescript-ssr-react模板添加路由后出现路由匹配错误求助
解决Vite-TS-SSR-React模板中React Router路由匹配错误的问题
1. 根路径无匹配路由的问题
你的路由配置仅定义了/auth和/dashboard,未处理根路径/,因此会触发No routes matched location "/"错误。解决方式是添加根路径路由,可选择重定向到已有页面或创建首页组件:
修改app.tsx:
import React from "react"; import { Routes, Route, Navigate } from "react-router-dom"; import AuthPage from "./pages/AuthPage.tsx"; import DashboardPage from "./pages/DashboardPage.tsx"; import { ContextWrapper } from "./context/Context.tsx"; export const App = () => { return ( <ContextWrapper> <Routes> {/* 根路径重定向到/auth */} <Route path="/" element={<Navigate to="/auth" replace />} /> <Route path="/auth" element={<AuthPage />} /> <Route path="/dashboard" element={<DashboardPage />} /> {/* 可选:添加404页面处理未匹配的路由 */} <Route path="*" element={<div>404 页面未找到</div>} /> </Routes> </ContextWrapper> ); }; export default App;
2. Tailwind路径与Favicon的路由匹配问题
/tailwindcss/*、/favicon.ico属于静态资源,在SSR模板中需要让服务端优先处理静态资源请求,再将剩余请求交给React Router。
找到服务端入口文件(通常为server.ts或entry-server.tsx),添加静态资源处理逻辑:
import express from 'express'; const app = express(); // 处理public目录下的静态资源(比如favicon.ico) app.use(express.static('public')); // 处理Tailwind相关的静态资源请求 app.use('/tailwindcss', express.static('node_modules/tailwindcss/dist')); // 最后处理SSR路由逻辑 app.get('*', (req, res) => { // 这里是你的SSR渲染代码,比如renderToString等逻辑 });
确保favicon.ico放在项目根目录的public文件夹下,服务端会直接返回该文件,不会进入React Router的匹配流程。
内容的提问来源于stack exchange,提问作者Louis Eiden
相关产品推荐
相关产品推荐

