Структура моего каталога выглядит следующим образом:
/views/
|-- index.jade
|-- layout.jade
/account/
|-- login.jade
|-- register.jade
Я настроил свой механизм просмотра следующим образом:
app.set('view engine', 'jade');
Изменить:Я также есть
app.set('views', __dirname + '/views');
Мои контроллеры выглядят так:
app.get('/login', redirectIfLogined, function(req, res){
res.render('account/login', { title: "Login", redir: req.query.redir});
});
app.get('/register', redirectIfLogined, function(req, res) {
res.render('account/register', { title: "Register"});
});
С настройками, как описано, я получаю ошибку 500:
500 Error: failed to locate view "layout"
at Function.compile (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:58:15)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:414:18)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:429:10)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at D:\dev\Azznomad\express-template\controllers\accountController.js:6:13
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at D:\dev\Azznomad\express-template\modules\middleware\account.js:27:9
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at param (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:246:11)
Как только я копирую свой файл layout.jade
в папку /account/
, он работает отлично. К сожалению, это не имело бы смысла, поскольку вынуждало меня иметь избыточные файлы макета.
Что я упускаю?
Кстати. эти фрагменты кода взяты из шаблона AzzNomad express/mongoose , который очень полезен для изучения экспресса с помощью mongoose.