2017-06-22 40 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。如果我得到回撥它的作用。 –

相關問題