【问题标题】:Meteor SSR "Error: Can't render undefined"Meteor SSR“错误:无法渲染未定义”
【发布时间】:2017-06-11 09:32:06
【问题描述】:

我正在尝试在基本的 Meteor 应用程序中使用 IronRouter 和 Meteor-SSR 进行服务器端渲染。当我在浏览器中加载/home 时,出现以下错误:

Error: Can't render undefined
    at checkRenderContent (packages/blaze.js:702:11)
    at contentAsView (packages/blaze.js:724:3)
    at Blaze.toHTML (packages/blaze.js:851:40)
    at Object.SSR.render (packages/meteorhacks_ssr.js:208:10)
    at [object Object].Router.route.where (main.js:9:20)
    at boundNext (packages/iron_middleware-stack.js:408:31)
    at runWithEnvironment (packages/meteor.js:1176:24)
    at packages/meteor.js:1189:14
    at [object Object].urlencodedParser (/Users/roger/.meteor/packages/iron_router/.1.1.1.1q7cd8x++os+web.browser+web.cordova/npm/node_modules1/body-parser/lib/types/urlencoded.js:84:40)
    at packages/iron_router.js:886:36

这是应用程序的代码:

// main.js

if (Meteor.isServer) {
  Router.route('/home', function() {
    let html = SSR.render('home');
    this.response.end(html);
  }, {where: 'server'});
}

if (Meteor.isClient) {
  Router.route('/home', function() {
    this.render("home")
  });
}

这里是main.html:

<head>
  <title>SSR Test</title>
</head>
<body>
</body>

<template name="home">
  Home
</template>

【问题讨论】:

    标签: node.js api meteor meteor-blaze


    【解决方案1】:

    这是因为您的home 模板未在服务器上定义。要使用SSR 包,您需要先在您的服务器中使用SSR.compileTemplate 编译模板,然后才能使用SSR.render 渲染它。这是一个简单的例子:

    if (Meteor.isServer) {
      const template = 'Hello {{username}}, <br> Now time is: {{time}}';
      SSR.compileTemplate('hello', template);
    
      Router.route('/home', function() {
        const html = SSR.render('hello', {
          username: 'foo',
          time: new Date(),
        });
    
        this.response.end(html);
      }, {where: 'server'});
    }
    

    还有一个更好的从服务器上的静态文件编译模板,可以找到here

    【讨论】:

    • 谢谢。有没有办法轻松加载 main.html 中已经定义的模板? meteor-ssr 的文档说“以前,这个包会在你的应用程序启动时加载所有客户端模板。但现在流星不允许我们这样做。所以这种行为已经被删除。”。有没有办法实现这种行为?
    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 2019-02-18
    • 2019-11-24
    • 2021-02-17
    • 2020-04-08
    • 2015-03-24
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多