Koa w/client 侧路由器

Koa w/client side router

现状:

前端:React 和 React-Router

后端:Koa

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

当我在浏览器中点击 React Router 的 < Link > 时,每个网页都会显示。 每当我刷新页面或手动输入一个link。我得到一个 'not found' 页面。顺便说一句,这里没有服务器端渲染。如何让 React-Router 处理上面未指定的路由,即仅在客户端?

当页面刷新时,服务器必须响应一些东西;在这种情况下,它需要响应 index.html 以便客户端应用程序可以启动,然后 React Router 可以根据 URL.

挂载正确的组件

因此,服务器端,您需要告诉 Koa 为 每个 URL 服务 index.html路线。

解决方案(根据上面的回答)

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 服务。 :)