现状:
前端: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处理上面未指定的路由,即仅处理客户端?
答案 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。 :)