node.js - Meteor SSR "Error: Can' t 渲染未定义”

标签 node.js api meteor meteor-blaze

我正在尝试在基本 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>

最佳答案

发生这种情况是因为服务器上未定义您的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 找到。

关于node.js - Meteor SSR "Error: Can' t 渲染未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864533/

相关文章:

javascript - 错误!缺少脚本 : Start when deploying to heroku

php - 寻求建议 - 使用 Ruby/Rubygems 测试 PHP API 调用

使用 OpenSSL API 将 .crt 转换为 .pem

javascript - 在 Meteor 中如何创建通用事件处理程序?

javascript - 有没有办法重新加载{{>yield}}的主模板

javascript - Meteor/Node 中的同步方法

node.js - 如何创建 NestJs grpc 客户端

node.js - AWS API Gateway "Unsupported method\"未定义\""作为响应

javascript - nodeJS .exports,需要有关要返回的对象的问题

java - 谷歌 API key 不适用于 Android