使用UrlParser.parseHash
函数,我能够成功解析以下网址:
http://localhost:8000/MyRepl.elm/#home/something-else
行为与预期一致,当我在浏览器中复制粘贴并点击回车时 - 应用程序会加载适当的视图。
但是现在我要删除#
,为此我使用了UrlParser.parsePath
函数。我完全像以前一样保留了其余的代码 - 但由于某种原因,这不起作用。
当我复制粘贴这个并点击回车:
http://localhost:8000/MyRepl.elm/home/something-else
- 请注意没有#
。
浏览器向elm -reactor localhost服务器创建直接请求。
没有路由发生。 elm reactor服务器返回404 - 就好像没有名为/MyRepl.elm/home/something-else
但是,应该可以使用#
进行路由,因为http://package.elm-lang.org/packages
- 文档网站是用elm编写的,并且您可以看到网址中没有#
。
问题:
任何人都遇到过同样的问题?任何想法如何解决这个问题?
或者你能指点一个没有#
的导航按预期工作的仓库吗?
答案 0 :(得分:7)
您需要一个为每个请求提供索引页面服务的后端。在提供索引页面之后,路由将像往常一样在Elm中发生。
例如,在表达中,它看起来像:
router.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
router.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, 'public/index.html'));
});
榆树反应堆不支持此。
如果您使用的是webpack,则可以使用historyApiFallback
属性How to tell webpack dev server to serve index.html for any route