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 に答える