В моем операторе select, если параметр из URL-адреса неверен, я хочу отправить пользователя в пользовательский шаблон ошибок.
Я попытался настроить рендер, но переданные параметры не работают.
#routes.js
router.get('/select-id/', function(req, res) {
var id = req.query.id;
if(id && id.match(/^[0-9]+$/) != null){
mc('SELECT * FROM tasks where ID = ' + id, function (error, results, fields) {
if (error) throw error;
res.render('pug-select-all', {
title: 'Results',
data: results
});
});
}
else {
res.render('error', {status: 500, stack: 'error'});
}
});
#error.pug
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}
Я пробовал разные вещи, но я всегда получаю сообщение об ошибке в файле rout.js или в шаблоне pug. Если я оставлю это как приведенный выше код, я получу Cannot read property 'status' of undefined
в error.pug
2 ответа
Глядя на документы, вы должны либо отправить свой объект ответа как:
res.render('error', { "error": {status: 500, stack: 'error' } });
Или в шаблоне pug
, откройте его как член первого уровня , например:
#error.pug
extends layout
block content
h1= message
h2= status
pre #{stack}
Вот как это работает для меня
res.status(404).render('errorPage', {
title: '404 - page nt found!'
});
Для ваших нужд это может быть
res.status(500).render('error', {
status: 500,
stack: 'error'
});
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.