2017-06-22 63 views
0

我是新来的节点和快递,所以我想我做的事情很愚蠢。node express.js发送后无法设置标题。'

完整的源代码,可以发现:

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。

对此提出建议?

+3

在调用json函数后,删除'.end()'。 – noahnu

回答

0

删除res.json()后面的end()。

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

+0

我删除了.end()调用,但它没有帮助。 –

+0

你现在得到了什么错误... –

+0

这个问题似乎在[link](https://github.com/wa1gon/aclogGate/blob/master/server/aclogApi/AcLogConn.ts)我打电话给logRouter。 get('/ loggate/va/listall from net.socket.on callback。如果我得到回拨它的作用。 –

相关问题