javascript - 刷新页面给出 Cannot GET/page_url in react-router 2

标签 javascript reactjs react-router

我正在使用带有 React 0.14 和 React-router 2 的客户端渲染。我已将我的应用程序部署到本地节点服务器。

我在 url (server_url/component1)。每当我刷新我得到的页面时

Cannot GET /component1 

来自服务器端的错误。

我知道发生这种情况是因为我再次向服务器发送请求 /component1 服务器上不存在该路由。但是我想在刷新页面时禁用它,它应该只由客户端路由处理。我不想向服务器发送任何请求。

我的应用程序 index.js 的入口点

import React from 'react';
import ReactDOM from 'react-dom';
import {Router,browserHistory} from 'react-router';
import routes from './routes';

ReactDOM.render(
    <Router routes={routes} history={browserHistory}/>
  , document.querySelector('.init')
);

我的 routes.js 文件

module.exports = (
       <Route path="/" component={App}>
           <IndexRoute component={Home}/>
           <Route path="/component1" component={comp1}/>
       </Route>
)

编辑: 在这种情况下,我应该使用浏览器历史记录还是哈希历史记录?它们相同吗?

最佳答案

如果我对您的理解正确,那么您必须将所有与定义的路由不匹配的请求重定向到前端。如果它只是一个静态 html 文件,路由应该是这样的:

app.get('*', function(req, res) {
    res.sendFile('public/index.html');
});

更新

要让其他路由工作,您应该将它们放在catching 路由的前面,因为 express 应用它们,反之亦然(第一个定义的路由将作为最后一个应用):

app.get('/any_route_here', (req, res) => {
  res.json({msg: 'ROUTE WORKS'})
});

app.get('*', (req, res) => {
  res.sendFile('public/index.html'); //pas routing to react
});

以这种方式,如果您发出类似这样的请求:yourserver.host/any_route_here,您将收到一条 json 消息 ROUTE WORKS,但对于任何其他请求,路由将传递到您的前端。

关于javascript - 刷新页面给出 Cannot GET/page_url in react-router 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141859/

相关文章:

javascript - 在 React 中,如何从 Last.fm API 中转义 Hash 标签

javascript - 导航到没有react-router的URL - "_this.props.history is undefined"错误

JavaScript 拖放 <p> 元素?

javascript - 使用 React 中的下拉菜单过滤来自 API 的数据

javascript - Prop 未转移给孙子

javascript - 测试异步 async await JavaScript 函数

javascript - 有没有办法对单个页面上的多个项目使用相同的 jQuery Ajax?

javascript - 当从某些外部资源修改 DDL 值时调用 DDL 的 Change 事件

javascript - 在服务器端的 react-router 中使用 basename

javascript - React Router v4 嵌套路由传递与类组件匹配