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)

它不会在任何给定的页面上每次都出现,而是不时出现。因此,即使在互联网上进行了一些研究之后,我仍然无法弄清楚如何解决该问题。

萨拉斯·阿克

这就是我解决问题的方式。删除了尝试缓存并添加了错误事件

request({...}).on('error', error => {
res.status(502).send(error.message);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写Node.js模块以处理传入的管道流

有条件地在Node.js中管道流

管道流以编辑node.js中的csv文件

Gulp管道中未处理的流错误

缓存承诺导致Node.js中未处理的承诺被拒绝

Node.js流/管道错误处理(错误时更改响应状态)

如何在Node.js ExpressJS中的异步对象方法中处理未处理的承诺拒绝?

Node.js未处理的承诺拒绝

“管道中未处理的流错误”-使用带有express的request.js的文件下载过多

Node.js未处理的“错误”事件

Node.js未处理的拒绝错误

UnhandledPromiseRejectionWarning:Node.JS中未处理的承诺拒绝(拒绝ID:1)

在node.js中处理操作错误

如何正确处理Node.js中的异步错误

是什么确定在node.js(控制台/脚本)中未处理承诺拒绝?

HTTP响应流是否需要Node.js中的错误事件处理程序?

依次运行gulp任务会在管道中抛出“未处理的流错误”

未在Node.js中定义未处理的承诺拒绝错误值

捕获到的承诺中未处理的捕获错误-Node.js

处理Node js中的多个错误

Node.js抛出未处理的错误事件

node.js中的TCP流处理

node.js 中未处理的错误

node.js 中管道和流的区别

Node Js (Sequelize) - 未处理的拒绝 SequelizeDatabaseError:“字段列表”中的未知列“id”

在 BigQuery 中运行 node.js 文件时如何停止未处理的承诺错误?

Node.js:将管道与流一起使用时的错误处理

Node JS 抛出错误“管道中未处理的流错误”

UnhandledPromiseRejectionWarning:来自 Node JS 的未处理的承诺拒绝,React 中的预检响应