EJS githubページには、簡単な例が1つだけあります: https ://github.com/visionmedia/ejs
例
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
これは、userという名前の変数の存在をチェックしているようで、存在する場合は、いくつかの処理を行います。ええと?
私の質問は、ユーザー変数が存在しない場合、なぜノードがReferenceErrorをスローするのかということです。これにより、上記の例は役に立たなくなります。変数の存在を確認する適切な方法は何ですか?try / catchメカニズムを使用して、そのReferenceErrorを取得する必要がありますか?
ReferenceError: user is not defined
at IncomingMessage.anonymous (eval at <anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:140:12))
at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:142:15)
at Object.render (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:177:13)
at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22)
at Object.<anonymous> (/Users/me/Dropbox/Projects/myproject/server.js:188:9)
at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
at pass (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10)
at /usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:152:27
at Object.restrict (/Users/me/Dropbox/Projects/myproject/server.js:94:5)
at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
サーバーコードに「ユーザー」ローカル変数を追加するだけでこのエラーを解消できることは理解していますが、ここで重要なのは、毎日のif / elseを使用して、実行時にそのような変数の存在を確認したいということです。 nullcheckタイプのパターン。存在しない変数の例外は、私にはばかげているように思えます。