react-router,解析超越root的URL

问题描述 投票:0回答:1

我有一个create-react应用程序与react-router-dom。如果我从根开始(即'/')然后遵循Links中定义的链接,它的效果会很好。但是,如果我尝试不是从根路径加载应用程序,它说

Cannot GET /<path>

据我所知,这应该在服务器端设置(我正在使用常规localhost:9000)。或不?无论如何,如何实现这一目标?


请注意,这与基本路径解决问题无关,如下所述:Can I set a base route in react-router


更新:

我想,应该有一个类似于使用.htaccess的解决方案。但我仍然无法弄清楚如何将它应用于create-react-app。或者,也许,可以在webpack.config.js中设置适当的选项?

更新2.回购在这里:https://github.com/srgg6701/react-mini

node.js reactjs webpack webpack-dev-server react-router-v4
1个回答
2
投票

由于所有路由都由路由器处理,路由器通常位于'/'(索引)路径中,因此您需要回退到索引,以便路由器知道重定向的位置。这可以通过设置服务器端的路径来完成,但我发现this package在这些方面特别有用。

的WebPack

如果您使用webpack-dev-server,您应该知道它提供以下内容(取自官方文档):

将webpack与提供实时重新加载的开发服务器一起使用。这应该仅用于开发。

它使用了引擎盖下的webpack-dev-middleware,它提供了对webpack资产的快速内存访问。

...

这两种方法都将启动服务器实例并开始在端口8080上侦听来自localhost的连接。

这意味着服务器将运行侦听localhost。您可以使用以前的方法(服务器端编码或中间件)或使用history api fallback option解决此问题:

"scripts": {
    "start": "webpack-dev-server --history-api-fallback --config webpack.dev.config.js",
    "build": "webpack"
},

查看webpack的官方文档,了解有关其所有组件的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.