这个问题已经被问过了,但略有不同,即对我来说,路由不会只在使用构建的项目时渲染,否则在dev模式下一切都很好.为什么会这样,我该如何解决它?
dev条有效路由:
"http://localhost:5173/"
"http://localhost:5173/#/about"
production条路由(不起作用):
"https://my-domain/audio-ui/"
"https://my-domain/audio-ui/#/about"
我用tsc && vite build --base=/audio-ui/
构建,因为我需要/audio-ui子路径.我有另一个项目,在那里我使用了相同的构建方法,它运行得很好,但我没有在那里使用React—Router—DOM.
整个(简单)项目是https://github.com/adrhc/audio-ui/tree/RouterProvider_only.
main. tsx内容:
// import React from 'react';
import ReactDOM from 'react-dom/client';
import Dashboard from './Dashboard.tsx';
import '@fontsource/roboto/300.css';
import '@fontsource/roboto/400.css';
import '@fontsource/roboto/500.css';
import '@fontsource/roboto/700.css';
// import { CssBaseline, ThemeProvider, createTheme } from '@mui/material';
import { RouterProvider, createHashRouter } from 'react-router-dom';
import Volume from './Volume.tsx';
import About from './About.tsx';
import ErrorPage from './ErrorPage.tsx';
import Root from './Root.tsx';
const router = createHashRouter(
[
{
path: '/',
element: <Root />,
errorElement: <ErrorPage />,
children: [
{
path: '',
element: <Dashboard />,
},
{
path: 'volume',
element: <Volume />,
},
{
path: 'about',
element: <About />,
},
],
},
],
{ basename: import.meta.env.BASE_URL }
);
ReactDOM.createRoot(document.getElementById('root')!).render(
<RouterProvider router={router} />
);