EJS和Node,EJS如果传入的对象不存在则抛出错误?

Sta*_*tec 2 ejs node.js express embedded-javascript

我试图使用ejs将消息对象传递给模板.我的路线代码如下:

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

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

    <% if (message) { %>
        <div class="alert alert-danger"><%= message %></div>
    <% } %>
Run Code Online (Sandbox Code Playgroud)

但是当我根本不传递一个对象(不仅仅是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
Run Code Online (Sandbox Code Playgroud)

同样,如果我尝试,if(message.length > 0)但只是给了我同样的错误.我认为if声明的重点是if message不存在,它只是跳过.如果没有传递消息对象,我怎么能只让ejs渲染,或者message每次都必须传递一个空的obect?

twh*_*ead 5

明确检查是否message已定义.这解决了它:

<% if (typeof message !== 'undefined' && message.length > 0) { %>
  <div class="alert-danger"><%= message %></div>
<% } %>
Run Code Online (Sandbox Code Playgroud)