node express.js发送后不能设置标头。'

时间:2017-06-22 02:13:25

标签: javascript node.js express typescript

我是节点和表达的新手,所以我觉得我做的事情很蠢。

完整的源代码可在以下网址找到:

https://github.com/wa1gon/aclogGate/tree/master/server

logRouter.get("/loggate/v1/listall", function(req, res) {
    let countStr = req.param('count');
    let count: number;

    if (!countStr) {
        count = null;
    } else {
        count = Number.parseInt(countStr);
        if (count == NaN) count = null;
    }

    acConn.listAllDatabase(count, (err: string, result: Array<LogGateResp>) => {
        console.log("got list all data resp")
         return res.json(result).end();
    });


    }

    );
    app.use('/', logRouter);

虽然它第一次工作,但是第二次爆炸。

listallDatabase连接到一个网络套接字,它接收XML数据库,解析它并使用JS对象回调。反过来调用res.json。

建议?

1 个答案:

答案 0 :(得分:0)

在res.json()之后删除end()。

res.josn()将响应发送到frontend,end()尝试再次发送响应。 这就是你得到错误的原因。因为node.js不允许API发送两次响应。使用res.end()或res.json()。