最近采用umi搭建react ssr项目,ssr写方参考了官方提供的example/ssr-koa实例,meta 采用官方推荐的react-helmet在每个页面设置不同的meta信息。发现经过自定义服务器koa之后,meta信息就渲染不出来了。经历各种苦逼和同事发现了两种解决方法:
1、在全局的layout 下写meta, 然后再在对应的页面写meta。这个是同事发现的解法,他说要先渲染外层,单纯渲染url层meta无法渲染出来。经测试,第一次访问的时候,这种方法渲染出来有可能出错。
2、将自定义server 中render的mode参数从stream改成string 。我不经意件发现的。可能steam渲染太快吧,具体不知到什么原因。反正走远,好使
const { html, error } = await render({
path: ctx.request.url,
mode: 'string', // stream改成string
});