Auf der EJS-Github-Seite gibt es nur ein einfaches Beispiel: https://github.com/visionmedia/ejs
Beispiel
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Dies scheint die Existenz einer Variablen mit dem Namen user zu überprüfen und, falls vorhanden, einige Dinge zu tun. Duh, richtig?
Meine Frage ist, warum in aller Welt Node einen ReferenceError auslösen würde, wenn die Benutzervariable nicht existiert? Dies macht das obige Beispiel unbrauchbar. Wie kann das Vorhandensein einer Variablen angemessen überprüft werden? Wird von mir erwartet, dass ich einen Try / Catch-Mechanismus verwende und diesen ReferenceError greife?
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)
Ich verstehe, dass ich diesen Fehler beheben könnte, indem ich einfach eine lokale "Benutzer" -Variable in meinen Servercode einfüge, aber der springende Punkt hier ist, dass ich zur Laufzeit überprüfen möchte, ob solche Variablen zur Laufzeit vorhanden sind, indem ich jeden Tag if / else verwende Muster vom Typ nullcheck. Eine Ausnahme für eine Variable, die es nicht gibt, erscheint mir lächerlich.