【发布时间】:2021-12-07 12:50:49
【问题描述】:
我在这个问题上已经没有智慧了,希望任何可以让我走上正轨的想法。
我已经实现了一个 React.js SPA,它使用 react-router-dom v6 来浏览应用程序功能。该应用程序在我的本地主机上完美运行。当部署到生产环境时,<Route ... /> 不会呈现任何内容。
我已通过在<Routes> ... </Routes> 之外渲染<h2> 元素来检查部署路径是否正确。
App.js
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
const App = () => {
const title = `${(process.env.REACT_APP_TITLE)}`;
const TwentyfourStats = () => (<h2>Works</h2>);
return (
<Router>
<div id="app" className="App">
<h2>{title}</h2>
<div>
<Routes>
<Route path="/" element={<TwentyfourStats />} />
</Routes>
</div>
</div>
</Router>
);
}
export default App;
我尝试在 package.json 中调整 "homepage": "..." 时设置 <Routes homebase={}>,但没有任何区别。
非常感谢
更新:我在示例中内联了组件 <TwentyfourStats /> 以删除文件夹结构上的任何依赖项。结果是一样的。
更新 2:问题已解决,正如 @VitaliyRayets 指出的那样,使用 HashRouter 而不是 BrowserRouter(请参阅答案)。
【问题讨论】:
-
您能否提及您在生产中看到的内容?是白屏吗?你在哪里部署它?您能否也分享一次您的文件夹结构?
-
也许在生产中您的项目不在主目录中,因此您必须更改服务器的设置。您可以快速测试它,只需使用
HashRouter而不是BrowserRouter -
在本地主机上,我看到由
<TwentyfourStats />渲染的“Works
”,而在部署服务器上却完全没有。 -
谢谢@VitaliyRayets!
HashRouterworks。想解释一下原因吗? -
我写在下面)