У меня есть некоторая базовая аутентификация на маршруте, который при использовании выдает ошибку консоли.
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
at ServerResponse.header
Это происходит только в том случае, если оператор «if» является истинным (выполняется код внутри оператора if). Когда это не запускается, я не получаю никакой ошибки, и «домашний» вид отображается без ошибок.
routes.get('/scan', (req, res, next) => {
const orderID = req.query.order;
const token = req.query.token;
if (!hasAccess(token))
res.status(401).send('Unauthorized');
res.render('home', {order});
});
2 ответа
Вы должны добавить return;
после своего res.status(401).send('Unauthorized');
, чтобы избежать отправки дублирующего ответа.
Эта ошибка выдается, когда вы пытаетесь ответить на ваш запрос более одного раза.
Чтобы избежать такого рода ошибок, вы должны return
при отправке ответа, чтобы функция не продолжалась.
В твоем случае :
routes.get('/scan', (req, res, next) => {
const orderID = req.query.order;
const token = req.query.token;
if( !hasAccess( token ) )
return res.status(401).send('Unauthorized');
return res.render('home', {order});
});
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.