我有一个react网站,在本地运行良好,使用react浏览器路由器。当我构建它并将构建文件夹放在我的托管webhost(dreamhost)上时,到其他页面的路由不起作用。app.js
<Router>
<Header />
<Routes>
<Route exact path="/" element={<Home />} />
<Route path="/contact" element={<ContactPage />} />
</Routes>
<Footer />
</Router>
我遵循了以下指南:https://www.andreasreiterer.at/fix-browserrouter-on-apache/
建议添加一个.htaccess文件
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
因此,在添加了带有这些行的htaccess文件后,我的托管react网站现在可以正确地路由到页面(而之前它是404)。唯一的问题是,现在当我访问这些页面时,我只会得到控制台错误消息:
2.6c645178.chunk.js:1 Uncaught SyntaxError: Unexpected token '<' (at 2.6c645178.chunk.js:1:1)
main.2e7dd33a.chunk.js:1 Uncaught SyntaxError: Unexpected token '<' (at main.2e7dd33a.chunk.js:1:1)
manifest.json:1 Manifest: Line: 1, column: 1, Syntax error.
根据我在网上找到的东西,它似乎把页面当作html,而不把它当作javascript。有人对我如何解决这个问题有什么建议吗?我看到的建议提到在script标签中添加lang=。但在我的react应用程序中,我没有任何script标签。
2条答案
按热度按时间6kkfgxo01#
1.请查阅react router文档并搜索路由器组件上的basename prop
1.您得到的错误可能是JSON没有被正确解析的地方。尝试在代码中找到JSON.parse(),看看是否可以用某种方法修复它
11dmarpk2#
我想出了解决办法。在尝试添加一个基名称(如一个评论者所建议的)后,我意识到路由正在工作,因为页面在具有基名称的子目录中工作。
原来在package.json的主页上,我只需要添加一个“/"。因此,不要使用“主页”:“http://website.com“我将其更改为http://website.com/。
之前我有过“主页”:““。因为某些指南建议在部署到Web服务器时把它放在那里,所以它使用任何文件夹。显然,我必须有我的网站的公共URL,沿着结尾的/来修复路由。