路由MERN路由可在localhost上运行,但不能在Web服务器上运行

时间:2018-09-05 14:49:05

标签: node.js reactjs routing

我的基于MERN的网站(www.only4laugh.com)正在运行,很好,我可以通过单击Funcards缩略图访问其他页面,并且在此链接(http://www.only4laugh.com/preview/0/jokes/world_record)中显示动画预览。但是问题是,当我将同一链接直接复制粘贴到另一个选项卡上时,它显示错误“ Cannot GET / preview / 0 / jokes / world_record”,我很困惑为什么它可以在我的本地主机上正常工作,我需要用它来预览卡与自定义图像。我不明白为什么这是由于反应路线而发生的???或基于NGNIX的问题.....在节点上,我只是将app.get(“ /”)投放到index.html。

2 个答案:

答案 0 :(得分:0)

使用客户端路由时,node路由应为app.get("*"),这基本上意味着匹配所有传入请求并始终返回index.html
完整的URL将由客户端的路由机制保留和处理。
另一种选择是为每个选项声明一条路线,但我确定这不是您的意图。

答案 1 :(得分:0)

无论如何,经过很多尝试,我都知道问题出在使用基于JS的客户端应用程序(如React / Angular或其他带有路由器的应用程序)上时。问题是当我们通过navlinks或其中提供的其他链接浏览网站时网站,然后所有请求均由客户端处理,但是当我们刷新浏览器或在addessbar上手动键入一些url时就会出现问题,原因是使用此请求时,请求将转到客户端旁边的服务器端,然后路由到客户端和服务器没有意识到这一点,因此在刷新或在地址栏上输入一些URL会使应用程序中断,因此我发现的解决方案是我们需要进行服务器端渲染,这就是我得到的https://tylermcginnis.com/react-router-cannot-get-url-refresh/

无论如何,这不是我们的错,请继续尝试,不要担心错误,因为它使我们变得人性化,失败使我们成长。.