我在路由中有一些基本身份验证,当使用它时会抛出控制台错误。
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
at ServerResponse.header
仅当“if”语句为true(if语句中的代码运行)时才会发生。如果没有运行,我没有收到任何错误,“home”视图呈现没有错误。
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});
});
答案 0 :(得分:2)
当您尝试多次回复请求时,会抛出此错误。
为避免此类错误,发送回复时应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});
});
答案 1 :(得分:1)
您应该在return;
之后添加res.status(401).send('Unauthorized');
,以避免发送重复的回复。