2015-09-07 61 views
0

我試圖使用webshot模塊將頁面加載到服務器端,截取它們並將它們作爲PNG文件發送回瀏覽器。但是,我遇到了一條錯誤消息,說:NPM-webshot:發送後無法設置標題

Error: Can't set headers after they are sent.

我試圖根據示例撰寫一些代碼時收到此消息。

app.post('/api/downloadPng', function(req, res) { 

    var renderStream = webshot('google.com'); 
    renderStream.on('data', function(data) { 
     res.send(data) 
    }); 
    }); 

我得出的結論是,因爲它是一個流,該模塊試圖一旦它已經打開發送更多的數據,和節點不允許這樣。

所以我的問題是:如何在Webshot完成渲染後觸發一個函數?

回答

0

您應該使用res.write而不是通常的res.send,因爲前者可以被多次調用以獲得相同的響應。只需確保在開始發送數據之前寫入標題:

res.writeHead(200, { 'Content-Type': 'text/plain' }); 
res.write(...); 
res.write(...); 
res.end(); 
+0

請給出一個示例,包括標題的寫入。 – martin

+0

如果您打開鏈接,您將在文檔的正下方看到一個示例,StackOverflow僅用於尋求幫助,而不是尋求解決方案的地方 – gfpacheco

相關問題