2016-12-09 7 views
0

リクエストノードモジュールを使用してルートのプロキシコールを行うExpress.JSアプリケーションがあります。これはNodeJS V0.10.28とうまくいっていました。ただし、NodeJS V4.4.7にアップグレードすると、このエラーが発生し、「エラー:終了後書き込み」エラーがスローされます。リクエストモジュールを使用したNode.JSプロキシ

私はNodeJSを初めて使用しています。私はあなたの助けに感謝します。

var bodyParser=require('body-Parser'); 
app.use(bodyParser.json({limit: '100mb'})); 
app.use(bodyParser.urlencoded({extended: false})); 

.... 
.... 

app.use('/relay', function (req, res) { 
     var request = require('request'), 
      proxyUrl = 'http://abc.proxy.xyz:12345', 
      apiEndPoint = "https://aaa.bbb.ccc/svc"; 

     req.pipe(request.post(apiEndPoint,{ proxy: proxyUrl, form: req.body}, function (error, response, body) { 

      if (error) { 
       console.log(error) 
      } else { 
       console.log("No error here.") 
      } 

      res.end(); 

     })).pipe(res); 
}); 

答えて

0

後世のために、他の誰かが同じ問題に直面している場合は、私の解答です。

ミドルウェアのbody-parserを使用して問題が発生しました。body-parserが要求を読み込み完了し、ストリームが終了しました。したがって、質問に示されているreq.pipe() - in/relayの経路には何も読み込まれず、ストリームを再起動しません。

返されるエラーメッセージ "書き込み後終了"はかなり曖昧です。 Node.JS V0.10.28でこの問題に直面しなかったのも謎です。

app.use('/relay', function (req, res) { 
     var request = require('request'), 
      proxyUrl = 'http://abc.proxy.xyz:12345', 
      apiEndPoint = "https://aaa.bbb.ccc/svc"; 

     req.pipe(request.post(apiEndPoint,{ proxy: proxyUrl, form: req.body}, function (error, response, body) { 

      if (error) { 
       console.log(error) 
      } else { 
       console.log("No error here.") 
      } 

      res.end(); 

     })).pipe(res); 
}); 

.... 
.... 

var bodyParser=require('body-Parser'); 
app.use(bodyParser.json({limit: '100mb'})); 
app.use(bodyParser.urlencoded({extended: false})); 
:報告された問題は、ボディパーサー問題を回避するために、

だから、V4.4.7に気づいた、私は身体-パーサの呼び出し上記に/中継経路を移動します

関連する問題