此问题已经出现过,但现有的答案仍然不适合我。我的应用程序使用React-Router 4,后端使用Node / Express。
我看过Tyler McGinnis's explanation。我正在使用浏览器路由器和McGinnis称之为" Catch-all"解。我的路线看起来像这样:
app.use(express.static(path.join(__dirname, '../client/public')));
app.post('/auth/signin', signin);
// more Auth and CRUD routes
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, '../client/public/index.html'), function(err) {
if (err) {
res.status(500).send(err)
}
})
});
当我手动输入或刷新http://localhost:8357/admin
等路线时,此解决方案可以正常工作。但是,当我尝试使用更长的路线(例如http://localhost:8357/admin/create
)时,应用会崩溃。据我所知,浏览器会加载index.html
,但会在http://localhost:8357/admin/bundle
中查找包。
修改我通过在index.html中对css和bundle链接进行硬编码来修复此问题,即将<script type="text/javascript" src='bundle/bundle.js'></script>
替换为<script type="text/javascript" src='http://localhost:8357/bundle/bundle.js'></script>
。当我部署时,我将不得不更改这些链接。不是优雅的解决方案,但它的工作原理。还有更好的方法吗?
答案 0 :(得分:0)
我实际上不认为这与React Router有关。
如果要使用相对于目录根目录的路径,则需要确保在开始处使用正斜杠。
例如:您将要确保使用bundle/bundle.js
。而不是使用/bundle/bundle.js
。
希望对您有用!