【问题标题】:HTTP HEAD request giving ERR_STREAM_WRITE_AFTER_END error with node expressHTTP HEAD 请求使用节点 express 给出 ERR_STREAM_WRITE_AFTER_END 错误
【发布时间】:2022-02-17 13:34:05
【问题描述】:

我的应用程序有一个运行状况检查路由,用于检查应用程序的运行状况,它是 GET 路由,但我们将 HTTP HEAD 调用发送到同一路由,但我收到 ERR_STREAM_WRITE_AFTER_END 错误。深入研究时,我发现每当我尝试发送HEAD 类型的响应数据时,都会调用此错误,但找不到相同的实际原因。有人可以解释为什么它会这样吗?示例代码如下。

有错误的代码,即使使用res.jsonres.send 也会出错

router.get('/health', function (req, res) {
    res.send({
        message: "working great!!!"
    });
    res.end();
});

更新 1 -> 删除 res.send 后,它工作正常,但仍然想知道使用 res.send 的原因,它给出了错误。在HTTP HEAD 调用中,客户端按预期工作,它忽略了response body,但为什么在sever side 上,我们收到此错误?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    删除res.end()可能会解决问题

    你可以试试这个

    router.route("/health").get(function (req, res) {
        res.send({
            message: "working great!!!"
        });
        
    });
    

    【讨论】:

    • 感谢您的回答,是的,删除res.send 后它起作用了,您知道为什么会这样吗?为什么使用res.send会抛出错误?
    • 'res.end 结束请求,res.send 有时需要对响应进行字符串化,当res.send 尝试发送响应时它找不到请求对象并给出此错误
    猜你喜欢
    • 2019-10-20
    • 2017-09-06
    • 2020-02-12
    • 1970-01-01
    • 2020-03-24
    • 2021-04-11
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多