Node.js “快速中间件”;“连接超时”;原因“;Can';t在发送标题后设置标题。”;
我的代码:Node.js “快速中间件”;“连接超时”;原因“;Can';t在发送标题后设置标题。”;,node.js,express,connect-timeout,Node.js,Express,Connect Timeout,我的代码: timeout = require('connect-timeout') app.get('/', timeout('5s'), function(req, res){ ##DO SOMETHING 1 ##DO SOMETHING 2 ##DO SOMETHING 3 res.send('ok'); ##line 7 }); 当用户请求时。Node.js处理“做一些事情1-3”。但在它处理之前。中间件响应超时,因为它已设置为5秒。然后在第7行中再次尝试响应。其原
timeout = require('connect-timeout')
app.get('/', timeout('5s'), function(req, res){
##DO SOMETHING 1
##DO SOMETHING 2
##DO SOMETHING 3
res.send('ok'); ##line 7
});
当用户请求时。Node.js处理“做一些事情1-3”。但在它处理之前。中间件响应超时,因为它已设置为5秒。然后在第7行中再次尝试响应。其原因是错误“发送后无法设置标题。”
如何处理这个问题?我觉得这是一个常见的问题,所以我搜索并找到了 在这个回答中,我将概述我在上面链接的问题中提出的两种可能的解决方案:
res.send
之前,您可以通过属性检查请求是否超时:
app.get('/', timeout('5s'), function(req, res){
##DO SOMETHING 1
##DO SOMETHING 2
##DO SOMETHING 3
if (!req.timedout) {
res.send('ok'); ##line 7
}
});
app.use(function(req,res,next){
var _send = res.send;
var sent = false;
res.send = function(data){
if(sent) return;
_send.bind(res)(data);
sent = true;
};
next();
});