En la página de github de EJS, hay un solo ejemplo simple: https://github.com/visionmedia/ejs
Ejemplo
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Esto parece estar verificando la existencia de una variable llamada usuario, y si existe, haga algunas cosas. Duh, ¿verdad?
Mi pregunta es, ¿por qué en el mundo Node lanzaría un ReferenceError si la variable de usuario no existe? Esto hace que el ejemplo anterior sea inútil. ¿Cuál es la forma adecuada de comprobar la existencia de una variable? ¿Se espera que use un mecanismo de prueba / captura y agarre ese 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)
Entiendo que podría hacer desaparecer este error simplemente agregando una variable local de "usuario" en el código de mi servidor, pero el punto aquí es que quiero verificar la existencia de tales variables en tiempo de ejecución usando su if / else todos los días patrón de tipo nullcheck. Una excepción para una variable que no existe me parece ridícula.