节点JS发送后无法设置标头

时间:2015-08-01 16:40:14

标签: javascript node.js http header

我正在编写节点js应用程序。出于某种原因,我可以加载页面一次,它的工作原理。然后我得到一个错误,说“无法在发送后设置标题”

任何帮助都将不胜感激!感谢。

这是我的代码:

module.exports = {

login: function(req, res) {

    login.parseLogin(function(status) {

        if(status != true) {
            res.end();
        }

        res.send('{"Success": ' + true + '}');
        res.end();

    }, "Robert", "C");

},

signup: function(req, res) {

    signup.parseSignup(function(status) {

        if(status != true) {
            res.send(' {"Failed to create account": ' + new Date() + '} ');
            res.end();
        }

        res.send(' {"Account": ' + username + ',"createdAt": ' + new Date() + '} ');
        res.end();

    });

},


addbit: function(req, res) {
    console.log("Addbit");
},


removeBit: function(req, res) {
    console.log("RemoveBit");
},

queryBits: function(req, res) {
    console.log("QueryBits");
}

};

2 个答案:

答案 0 :(得分:1)

您的登录和注册功能中的问题是您检查错误情况,结束响应然后继续并再次发送响应。

    if(status != true) {
        res.end();
    }

应该是

   if(status != true) {
        return res.end();
    }

在第一次加载页面时,在一个或多个这些函数中,值为true,下次为false。

在注册时,它应该是:

if(status != true) {
        res.send(' {"Failed to create account": ' + new Date() + '} ');
        return res.end();
    }

答案 1 :(得分:0)

您可以在if语句之后停止执行,也可以只添加else子句:

 if(status != true) {
            res.send(' {"Failed to create account": ' + new Date() + '} ');
        } else {
            res.send(' {"Account": ' + username + ',"createdAt": ' + new Date() + '} ');
        }
 res.end();