NodeJS 在setInterval()内响应时使用express框架时出错

ftf50wuq  于 2023-01-30  发布在  Node.js
关注(0)|答案(1)|浏览(214)

我正在创建一个简单的应用程序发送一个简单的消息问候时,用户请求获得主页的请求。

app.get("/",(req,res)=>{
    setInterval(function(){
        res.status(200);
        res.send("hello");
    },5000)
})

这个想法是在5秒后发送响应。编译器在发送响应后抛出错误。错误如下
节点:_http_outgoing:663抛出新的错误_HTTP_HEADERS_SENT(“设置”);^
错误[HTTP标题发送错误]:将标头发送到新节点上的客户端后无法设置标头服务器响应中的错误(节点:内部/错误:400:5)。服务器响应中的设置标头(节点:_http_outgoing:663:11)。服务器响应中的标头(C:\用户\prudh\OneDrive\Documents\projects\whatsapp\node_modules\express\lib\response.js:794:10)。进程中的超时列表中的发送标头(C:\用户\prudh\OneDrive\Documents\projects\whatsapp\node_modules\express\lib\response.js:174:12)。进程中的超时列表中的发送标头(C:\用户\prudh\OneDrive\Documents\projects\whatsapp\index.js:40:13)。进程计时器(节点:内部/计时器:507:7){代码:'HTTP报头发送错误' }
为什么我会遇到此错误消息。
这是基本的代码块,所以我没有尝试任何东西。

icnyk63a

icnyk63a1#

setInterval重复运行函数,因此当它第二次尝试运行函数时会看到此错误,因为响应已发送到客户端。请改用setTimeout延迟函数:

app.get("/",(req,res) =>
    setTimeout(() => res.status(200).send("hello"), 5000)
)

相关问题