2014-11-04 48 views
2

我正在尝试使用ejs将消息对象传递给模板。我的路线代码如下:如果在对象中传递不存在EJS和节点,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声明的全部内容是if message不存在,它只是跳过。如果消息对象没有通过,或者每次都必须传递一个空的message,我怎么才能让ejs不提供任何内容?

+0

对不起,我不明白。传递任何对象都会导致该错误。我宁愿不必每次都传递一个空字符串的对象... – Startec 2014-11-04 22:43:31

+1

你可以尝试使用'''locals.message''',因为它显示在http://stackoverflow.com/questions/7289916/如何-将-您检查换未定义的属性功能于EJS换节点JS – amenadiel 2014-11-04 22:43:57

回答

5

明确检查是否定义了message。这修复了它:

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