Javascript 错误:Can';在页面刷新时发送标题后,不设置标题

Javascript 错误:Can';在页面刷新时发送标题后,不设置标题,javascript,node.js,express,Javascript,Node.js,Express,当我试图刷新一个特定的页面时,我得到了一个错误:发送后无法设置标题。现在,当我真的点击一个链接到那个页面时,它并没有发生。我已经彻底检查了请求期间的事件链。中间件和请求似乎不会导致res.end()被调用两次 对每个请求调用的中间件: projectRouter.use(function(req, res, next) { var token = req.body.token || req.params.token || req.headers['x-access-token']; c

当我试图刷新一个特定的页面时,我得到了一个错误:发送后无法设置标题。现在,当我真的点击一个链接到那个页面时,它并没有发生。我已经彻底检查了请求期间的事件链。中间件和请求似乎不会导致res.end()被调用两次

对每个请求调用的中间件:

projectRouter.use(function(req, res, next) {
  var token = req.body.token || req.params.token || req.headers['x-access-token'];

  console.log(token);

  if (token) {
    jwt.verify(token, superSecret, function(err, decoded) {
      if (err) {
        res.status(403).send({
          success: false,
          message: 'Failed to authenticate token.'
        });
      } else {
        req.decoded = decoded;

        next();
      }
    });
  } else {
    res.status(403).send({
      success: false,
      message: 'No token provided'
    });
    next();
  }
});
请求错误发生在:

projectRouter.route('/projects/:proj_id')

.get(function(req, res) {
  Project.findById(req.params.proj_id, function(err, project) {
    if (err) { res.send(err); return; }

    res.json(project);
  });
})
我在前端使用angular,并使用拦截器将用户令牌写入x-access-token。因此,当发生此错误时,中间件无法获取令牌,导致该页面出现403错误。几天来我一直在想这个问题,但我不知所措。我想这是一件非常愚蠢的事情

} else {
  res.status(403).send({
    success: false,
    message: 'No token provided'
  });
  next();
}

您的
else
块正在发送响应,同时调用
next()
,这意味着它将发送错误,并尝试运行路由并发送响应。由于两者都试图发送响应,您将得到一个错误。

啊,这似乎解决了错误,但没有解决令牌问题。令牌问题暴露了这个问题,这是一个好问题。谢谢你的回复!