使用 nodejs 中的中间件将它们发送到客户端后无法设置 headers

Cannot set headers after they are sent to the client using a middleware in nodejs

我遇到了这个错误

Cannot set headers after they are sent to the client

当我检查用户是否通过中间件进行身份验证时

var isAuthenticated = function (req, res, next) {
    if(!req.isAuthenticated()) res.redirect(301,'/login');
    next();
  };

  module.exports = isAuthenticated;

这是路由函数

router.get('/', isAuthenticated,(req, res) => {
    res.render('main/index.twig');
})

尝试将您的 if 条件更新为 return。否则它可能会尝试调用 redirect 然后 next.

if(!req.isAuthenticated()) return res.redirect(301,'/login');