我正在使用React/Vite/Express来构建托管在收件箱中的应用程序.例如,假设它托管在:https://example.com/my/app/
在我的Vite配置中,我将base
设置为./
export default defineConfig({
base: './',
build: {
outDir: './public/build',
},
plugins: [react()],
css: {
preprocessorOptions: {
scss: {
implementation: sass,
},
},
}
});
我还使用react-Router-dom.这是我的createBrowserRouter
配置:
export const router = createBrowserRouter(
[
{
path: '/',
element: <App />,
errorElement: <Error />,
children: [
{
path: '/',
element: <Home />,
},
{
path: '/test1',
element: <Test1 />,
},
{
path: '/test2',
element: <Test2 />,
},
],
},
],
{
basename: '/my/app',
},
);
当我访问包含/
的页面时,它运行良好,例如https://example.com/my/app/
然而,如果我使用https://example.com/my/app
删除尾随应用程序,Vite会认为基目录是父目录/my/
并将其用作根目录.React JS和CSS然后抛出404.
Vite中是否有一种方法可以在不将完整路径硬编码为base
的情况下修复这个问题,或者我需要在服务器上修复这个问题才能重定向到带有尾部斜线的URL?
我宁愿不对基础进行硬编码,因为它会根据环境而变化.不过,如果这是最佳实践方法,我会 Select 该解决方案.
我预计应用程序会假设my/app
是一个目录.相反,它似乎使用my/
作为目录.我try 将base
更改为.
并更改为空字符串,但没有成功.