[英]Unhandled stream error in pipe in Node.js
我在Node.js和Express中使用本地代理,代碼如下:
app.post('/', function(req, res){
var newurl = req.body.url;
var options = {
url: newurl,
headers: {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
}
};
res.writeHead(200, {
'Content-Type': 'text/html',
'Access-Control-Allow-Origin' : '*'});
try {
request(options).pipe(res);
} catch (err) {
res.write(err.message);
res.end();
}
});
它適用於大多數網站,但當我嘗試從某些網站檢索頁面時,Node會拋出以下錯誤:
stream.js:74
throw er; // Unhandled stream error in pipe.
^
Error: socket hang up
at createHangUpError (_http_client.js:200:15)
at Socket.socketOnEnd (_http_client.js:285:23)
at emitNone (events.js:72:20)
at Socket.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at nextTickCallbackWith2Args (node.js:437:9)
at process._tickCallback (node.js:351:17)
對於任何給定頁面,它不會每次都發生,而是不時發生。 因此,即使經過互聯網上的一些研究,我也無法弄清楚如何解決這個問題。
這就是我解決問題的方法。 刪除了try-cache並添加了錯誤事件
request({...}).on('error', error => {
res.status(502).send(error.message);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.