EJS github sayfasında tek ve basit bir örnek var: https://github.com/visionmedia/ejs
Misal
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Bu, user adlı bir değişkenin varlığını kontrol ediyor gibi görünüyor ve eğer varsa, bazı şeyler yapın. Değil mi?
Sorum şu, eğer kullanıcı değişkeni yoksa Node neden dünyada bir ReferenceError atsın? Bu, yukarıdaki örneği işe yaramaz hale getirir. Bir değişkenin varlığını kontrol etmenin uygun yolu nedir? Bir dene / yakala mekanizması kullanıp bu ReferenceError'ı yakalamam bekleniyor mu?
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)
Sunucu koduma sadece bir "kullanıcı" yerel değişkeni ekleyerek bu hatayı ortadan kaldırabileceğimi anlıyorum, ancak buradaki asıl mesele şu ki, if / else nullcheck türü desen. Var olmayan bir değişkenin istisnası bana gülünç geliyor.