请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

服务端页面渲染为空白且不报错!

运行过build:client、build:server后,启动koa服务器,访问对应的后台地址,页面能访问到,但是一片空白,查看页面源代码,好像也是全的,就是渲染不出来,是差什么文件吗?
这个是页面源代码:
图片描述
entry.server.js代码:

import createApp from './create-app'

export default context => {
  return new Promise((resolve, reject) => {
    //router、store对象包含服务端渲染api,用于ssr
    const  {app, router, store} = createApp();
    //手动调用router,执行路由跳转动作
    router.push(context.url);
    //路由跳转动作可能包含异步操作,当异步操作完成时,执行下方代码
    router.onReady(() => {
      //router的用于ssr的相关api,获取匹配push进来的路由对应的components
      const matchedComponents = router.getMatchedComponents();
      console.log("matchedComponents: ", matchedComponents);
      //未匹配到相关components,表明路由路径出错
      // if(!matchedComponents.length){
      //   return reject(new Error("no components matched!"))
      // }
      //处理asyncData的数据请求
      Promise.all(matchedComponents.map(Component => {
        if(Component.asyncData){
          return Component.asyncData({
            route: router.currentRoute,
            router,
            store
          })
        }else{//无asyncData请求
           return Promise.resolve();
        }
      })).then(data => {
        context.meta = app.$meta();
        context.state = store.state;
        context.router = router;
        resolve(app)
      })
    })
  })
}

同时我在服务器的console中打印出了entry.server.js里面的matchedComponents,如下:
图片描述
真的头疼!!麻烦老师帮忙看下!!

正在回答 回答被采纳积分+3

1回答

Jokcy 2020-04-14 21:55:55

你有把vueServerRenderer渲染的结果插入到html里面么

0 回复 有任何疑惑可以回复我~
  • 提问者 夏筱晗 #1
    查过了,是渲染写错了,用的.$mount,改成render:h=>h(App)就好了
    回复 有任何疑惑可以回复我~ 2020-04-16 08:49:11
  • Jokcy 回复 提问者 夏筱晗 #2
    好的!
    回复 有任何疑惑可以回复我~ 2020-04-16 22:19:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信