2

我正在尝试使用 ejs 将消息对象传递给模板。我的路线代码如下:

app.get('/', function(req, res) {
    res.render('index.ejs', {message: 'A message'});
});

在我的 ejs (index.ejs) 文件中,我有:

    <% if (message) { %>
        <div class="alert alert-danger"><%= message %></div>
    <% } %>

但是,当我根本不传递对象(不仅仅是message: "")时,它会返回以下错误:

ReferenceError: /Users/Documents/node/views/index.ejs:13
    11| <body>
    12|     <div class="container">
 >> 13|         <% if (message) { %>
    14|             <div class="alert alert-danger"><%= message %></div>
    15|         <% } %>
    16|         <div class="jumbotron text-center">

message is not defined

同样,如果我尝试if(message.length > 0),但这只会给我同样的错误。我认为if声明的全部意义在于 ifmessage不存在,它只是跳过。message如果没有传递消息对象,或者我每次都必须传递一个空对象,我怎样才能让 ejs 不呈现任何内容?

4

1 回答 1

5

显式检查是否message已定义。这修复了它:

<% if (typeof message !== 'undefined' && message.length > 0) { %>
  <div class="alert-danger"><%= message %></div>
<% } %>
于 2016-08-03T10:51:13.580 回答