我有一个create-react
应用程序与react-router-dom
。如果我从根开始(即'/')然后遵循Link
s中定义的链接,它的效果会很好。但是,如果我尝试不是从根路径加载应用程序,它说
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
由于所有路由都由路由器处理,路由器通常位于'/'
(索引)路径中,因此您需要回退到索引,以便路由器知道重定向的位置。这可以通过设置服务器端的路径来完成,但我发现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的官方文档,了解有关其所有组件的更多信息。