javascript - react-router 1.0 路由被express.js服务器拾取

标签 javascript reactjs express react-router url-routing

我一直在尝试让客户端路由仅由客户端处理。我认为这可以通过 HTML5 History API 实现。我的问题是express选择了像“/details/55”这样的路线(当我尝试执行“/#details/55”时,react-router和express什么都不做)。我缺少什么。

app.js

import React from 'react'
import { render } from 'react-dom'
import { IndexRoute, Route, Router, Link } from 'react-router'
import createBrowserHistory from 'history/lib/createBrowserHistory'

class App extends React.Component {
  render () {
    return (
            <div>
              <h1>
              Shared Header
              </h1>
              {this.props.children}
            </div>
      )
  }
}

const history = createBrowserHistory()

render((
  <Router history={history}>
    <Route path='/' component={App}>
      <IndexRoute component={Index} />
      <Route path='/details/:id' component={Details} />
      <Route path='*' component={NoMatch} />
    </Route>
  </Router>
  ), document.getElementById('app'))

服务器.js

import express from 'express'


app.use(express.static('public'))

app.get('/', (req, res) => {
  res.sendFile('index.html')
})

// Hack to get react-router to not interfere with express.
app.get('/details/:id', (req, res) => {
  res.sendFile('index.html')
})

最佳答案

在express中使用通配符

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

这将强制通过返回索引页面来处理所有服务器请求,其中 react 路由器将通过查看完整的 URL 来接管。

关于javascript - react-router 1.0 路由被express.js服务器拾取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879706/

相关文章:

node.js - 如何修复新的 mongoose 模块和 Nodejs - 昨天才发生

javascript - 当 knex 使用 async/await 抛出错误时结束响应

javascript - 我们如何将脚本包含到 Service Worker 中?

javascript - 使用 Ag-Grid Enterprise 许可证获取 'ag-grid: Looking for component [agSetColumnFilter] but it wasn' t 找到。”错误

javascript - ASP.Net MVC 中的简单 Dropzone 实现 - 如何获取 Controller 中的数据?

javascript - 学习者问题 : Functions for every text field. 有没有办法制作一个可以处理多个文本字段的通用函数

javascript - 在使用 testing-library 进行测试时使用 getByRole 时无法获取输入的名称

javascript - 在 Socket.IO 中, "io"cookie 有什么用?

java - 在具有 tomcat 目录结构的项目中从 java 访问 js 文件(java.io.FileNotFoundException)

javascript - Angular POST 路由未连接到 Nodejs 以进行 Stripe 集成