Express覆盖react-router客户端路由

时间:2016-06-07 02:52:27

标签: node.js express reactjs react-router

我不想使用服务器端渲染,因为开始工作是一种绝对的痛苦,而且没有它就能让一切正常。

但是,如果我创建一个像/test这样的新网址并访问localhost:3000 / test我会Cannot get /test

这是我的索引页面的提供方式

app.get("/", function(req, res) {
  res.sendFile(__dirname + '/client/index.html')
})

路由文件

const routes = (
    <div>
      <Route path="/" component={ AppContainer }>
        <IndexRoute component={ RegistrationContainer }/>
        <Route path="test" component={ StripeContainer }/>
      </Route>
  </div>
)

export default routes

1 个答案:

答案 0 :(得分:1)

我现在正在努力解决这个问题,我认为您需要在React路线之前声明/test路径。

我将如何在我的应用程序中实现它是在Express中为用户登录声明一些路由,然后在最后收到一些邮件,以便向React发送任何其他内容。

这样的东西
app.get('/login', function(...));
app.get('/logout', function(...));
app.get('*', <TO-REACT>);

我不确定这是否是处理此问题的正确方法,但它应该有效。

让我知道它是如何为您工作的,或者您是否预见到使用此问题。

更新: 我现在可以确认这对我有用。 以下是我的快递路线文件和基本React文件的缩写版本。

<强> 路由

// redirects any requests to root of domain to React (a polling app)
app.get('/', function(req, res) {
    res.redirect('/polls');
  });

// authentication routes
app.get('/login' function(....));
app.get('/logout' function(....));
app.get('/login/callback' function(....));
app.get('/login/authorise' function(....));

// React catch all route
app.get('*', function(....{sendfile....});

基本反应文件

import React from 'react';
import ReactDOM from 'react-dom';
import {Router, Route, Redirect, browserHistory} from 'react-router';

const PollListScreen = require('./PollListScreen.js');
const PollAdd = require('./PollAdd.js');

ReactDOM.render(
  (
  <Router history={browserHistory}>
    <Route path='/polls' component={PollListScreen} />
    <Route path='/polls/new' component={PollAdd} />
  </Router>
  ), document.getElementById('app')
);