На сторінці github EJS є один і лише один простий приклад: https://github.com/visionmedia/ejs
Приклад
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Це, здається, перевіряє наявність змінної з іменем користувача, і якщо вона існує, зробіть деякі речі. Ду, так?
Моє запитання: чому в світі Node кидає 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)
Я розумію, що я міг би усунути цю помилку, просто додавши локальну змінну "user" у свій код сервера, але вся справа в тому, що я хочу перевірити наявність таких змінних під час виконання, використовуючи щодня, якщо / ще nullcheck типу візерунка. Виняток для змінної, яка не існує, мені здається смішною.