【问题标题】:NodeJs Error: Can't render headers after they are sent to the client When sending response from different function?NodeJs错误:将标头发送到客户端后无法呈现标头从不同功能发送响应时?
【发布时间】:2018-06-01 11:06:36
【问题描述】:

我的路由器正在调用一个正在调用另一个函数的函数,但是当我使用另一个函数发送响应时出现错误

错误:在将标头发送到客户端后无法呈现标头。

但问题是我只发送一次响应然后我怎么能得到这个错误。

App.js

var Functions = require('./Functions');
app.post('/posts', Functions.fun1);

Functions.js

function func2(res, next) {
    res.json({status_code : 200, message : "Correctly Hit the URL!"});
    return next();
}

module.exports.func1 = function(req, res, next) {
    fun2(res, next);
}

编辑 - 实际上,当我直接发送响应(不使用其他功能)时,它仍然显示相同的错误,但问题是当我不发送任何响应时(例如删除res.send )而不是我在客户端没有得到任何响应(例如-但是应该有一些响应,因为标头已经发送?)

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    你不需要在res.json之后调用next,因为你已经完成了请求的处理。

    function func2(res, next) {
       return res.json({status_code : 200, message : "Correctly Hit the 
                       URL!"});
    
    }
    
    module.exports.func1 = function(req, res, next) {
    fun2(res, next);
    }
    

    【讨论】:

    • @SudhanshuGaur 如果你不在其他函数中使用函数,它可以工作吗?
    • 但我需要从不同的函数发送响应。
    • 这只是为了确定问题是否来自使用嵌套函数,如果您只使用一个函数,它是否有效?
    • 实际上,当我直接发送响应时,它仍然显示相同的错误,但问题是当我不发送任何响应(例如删除 res.send)时,我没有收到任何响应客户端的响应(例如-但是应该有一些响应,因为标头已经发送?)
    • 我认为问题不是来自你的处理程序,你能显示app.js的所有代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2021-10-24
    • 2021-11-21
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多