Koa w /客户端路由器

时间:2015-10-11 20:57:16

标签: javascript reactjs react-router koa

现状:

前端:React&反应-路由器

后端:Koa

app.use(mount('/graphql', graphqlHTTP({ schema: schema })));
app.use(mount('/api', api));
app.use(serve(__dirname + '../../public')); //serves static index.html

当我点击React Router的<链接>在浏览器中,每个网页都会显示。 每当我刷新页面或手动输入链接时。我找到了一个“未找到”页面。顺便说一下,没有服务器端渲染。如何让React-Router处理上面未指定的路由,即仅处理客户端?

2 个答案:

答案 0 :(得分:3)

刷新页面时,服务器必须使用某些内容进行响应;在这种情况下,它需要使用index.html进行响应,以便客户端应用程序可以启动,然后React Router可以根据URL安装正确的组件。

因此,在服务器方面,您需要告诉Koa为{em>提供每个网址,但该网址尚未与任何其他路由匹配。

答案 1 :(得分:1)

解决方案(基于上面的答案)

import router from 'koa-router';
import sendfile from 'koa-sendfile';
//code to initialize router
//...

router.get('*', function* () {
    let stats = yield* sendfile.call(this, pathToIndexHtml));

     if (!this.status) this.throw(404)
})

Koa现在在未指定的每条路线上提供index.html。 :)