使用Twitter卡EJS在索引页面上引用错误

时间:2018-05-21 20:17:52

标签: node.js twitter ejs

我在我的Twitter卡的header.ejs文件中有以下代码。

<head>
...
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@DrDenverHBubble">
<meta name="twitter:creator" content="@DrDenverHBubble">
<meta name="twitter:title" content="<%= blog.title %>"></meta>
<meta name="twitter:image" content="<%= blog.image %>"></meta>
</head>
...

在我的show.ejs页面上,我的网页显示正确,Twitter卡也在Twitter上正确显示。

但是,在我的index.ejs页面上,我收到以下代码

的错误
ReferenceError: /home/ubuntu/workspace/drdenver/views/blogs/index.ejs:1
 >> 1| <% include ../partials/header %>
    2|   
    3| 
    4| 

/home/ubuntu/workspace/drdenver/views/partials/header.ejs:16
    14| <meta name="twitter:site" content="@DrDenverHBubble">
    15| <meta name="twitter:creator" content="@DrDenverHBubble">
 >> 16| <meta name="twitter:title" content="<%= blog.title %>"></meta>
    17| <meta name="twitter:image" content="<%= blog.image %>"></meta>
    18|     </head>
    19|     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

blog is not defined

这是index.ejs代码

<% include ../partials/header %>



<div id="blog-index" class="container">
<div class="row" style="display: flex; flex-wrap:wrap;">
    <div class="col-lg-12">
      <% if(noMatch !== null) { %>
      <h4> <%= noMatch %> </h4>
    <% } %>
  </div>
  <% blogs.forEach(function(blog){ %>
      <div class="col-lg-12">
        <div class="ui medium rounded items">
        <div class="item">
          <div class="image">
            <img src="<%= blog.image %>">
          </div>
        <div class="content">
          <a class="header" href="/blogs/<%= blog._id %>"><%=blog.title%></a>
          <div class="meta">
          <span><%= blog.created.toDateString() %></span>
          </div>

          <div class="extra">
            <% if(blog.body && blog.body.length > 0) { %>
            <p><%- blog.body.substring(0, 120) %> ... </p>
            <% } %>
            <a href="/blogs/<%= blog._id %>">Read More</a>
          </div>
      </div>

    </div>

      </div>
    </div>
  <% }) %>
</div>
...

我是一名新编码员,但我知道我没有将任何内容传递给导致我的错误的变量博客。我的解决方案是在显示页面上删除&lt;%include ../partials/header%>并使用推特卡代码插入标题代码,并在header.ejs页面中删除Twitter卡代码。是否有更干的编码方式?

由于

1 个答案:

答案 0 :(得分:0)

您的问题是,您要包含需要博客数据的header.ejs文件。但是你没有将博客数据传递给它。将您的包含行更改为以下

<%- include('../partials/header', {blog: blog}); %>