Node Unhandled stream error in pipe错误处理

在使用nodeJs代理跨域请求的时候遇到一个问题,反复查证,并未分析出具体原因,这里简单记录,并介绍自己如何改正,报错代码如下:


var request = requrie('request'); // 使用node将remoteUrl请求代理到本地route请求,request为request模块 app.use(route, function(req, res){ var data = req.body; req.pipe(request({ method: 'POST', url: remoteUrl, form: data })).pipe(res); });

错误如图:

Node Unhandled stream error in pipe

大致分析,是说pipe管道流报错,write after end,意思应该是说流关闭后再向流执行写入操作,导致报错。

尝试去google,stackoverflow寻找原因和解决方案,也看到有说这是nodeJs的bug,最后均无果而回:

http://stackoverflow.com/questions/13220565/unhandled-stream-error-in-pipe-from-node-js

NODEJS writeStream error

Express error: write after end

那怎么办呢?,没有办法,既然通过流pipe解决不了,流写入报错,那就不使用pipe,如下代码,将代理的remoteUrl请求返回的数据直接send返回前端,不使用pipe方式:


app.use(route, function(req, res){ var data = req.body; request({ method: 'POST', url: remoteUrl, form: data, headers: req.headers }, function(err, re, body) { res.send(body); })); });

结果,不再报错,错误是解决了,但是错误原因还是不甚明了,现记录之,希望大家一起交流。

原创文章,转载请注明: 转载自 熊建刚的博客

本文链接地址: Node Unhandled stream error in pipe错误处理

熊 建刚

热爱前端,但不局限于前端,喜欢尝试各种新技术,爱好读书。

发表评论

电子邮件地址不会被公开。 必填项已用*标注