gpt4 book ai didi

node.js - Express 中间件 "connect-timeout"导致 "Can' 在发送后设置 header 。”

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:45 25 4
gpt4 key购买 nike

我的代码:

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 处理“DO SOMETHING1-3”。但在处理之前。中间件响应超时,因为已设置为 5 秒。之后,在第 7 行路由中再次尝试响应。它会导致错误“发送后无法设置 header 。”

如何处理这个问题?

最佳答案

我感觉这将是一个常见问题,所以我搜索了 GitHub repository并发现this issue .

在这个答案中,我将概述上面链接的问题中提出的两种可能的解决方案:

  1. 您可以通过req.timedout检查请求是否超时。调用 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
    }
    });
  2. 或者您可以安装一些顶级中间件来有效抑制错误:

    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();
    });

关于node.js - Express 中间件 "connect-timeout"导致 "Can' 在发送后设置 header 。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33121390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com