Краткий ответ: используйте locals.someVar
, если вы не уверены, что someVar
существует.
Более длинный ответ:
Я думаю, что первоначальный ответ Брэндона и последний комментарий верны (хотя синтаксис #{...}
не нужен), но для уточнения: есть разница между передачей переменной (технически, свойства объекта) с значение undefined
, и вообще не передавать эту переменную.
Поскольку Jade преобразует ваш шаблон в исходный код JS и eval
s (в контексте блока with
), вы должны убедиться, что вы не ссылаетесь на переменные, которые не были переданы в или они будут. Это сообщение в блоге имеет некоторую информацию о неопределенных и необъявленных переменных и ReferenceError
.
Ваш шаблон Jade должен работать правильно, если вы выполните одно из следующих действий:
// ok, even if req.session.username is not defined
res.render('index', { username: req.session.username })
// ditto
res.local('username', req.session.username);
res.render('index')
Но это не сработает:
res.locals(req.session) //if no username property exists
res.render('index', { /* no username */ } )
Если нецелесообразно вручную передавать каждый параметр, на который вы можете ссылаться, вы можете ссылаться на переменную в своем шаблоне как на свойства объекта locals
(например, locals.username
)