2017-03-17 16 views
0

expressクライアントのアプリケーションからexpress.jsを介してリクエストをプロキシしようとしていますか?これは、ミドルウェアリモートサーバーへのプロキシリクエスト

app.use('/v1', function(req, res) { 
    var url = process.env.API_URL + req.url; 
    console.info('Proxing to: ', url); 

    var r = null; 

    switch(req.method) { 
     case 'POST': 
     r = request.post({uri: url, json: req.body }); 
     break; 
     case 'PUT': 
     r = request.put({uri: url, json: req.body }); 
     break; 

     default: 
     r = request(url); 
    } 

    console.log(r); 

    return req.pipe(r).pipe(res); 
}); 

特急サーバがhttp://localhost:3030で実行されています。ミドルウェアはhttp://localhost:3030/v1へのGETリクエストで機能しますが、POSTリクエストまたはPUTリクエストでは機能しません。 PUTまたはPOST要求を行うと、サーバーが強制終了されます。これはエラーです

stream.js:74 
     throw er; // Unhandled stream error in pipe. 
    ^

Error: write after end 
    at ClientRequest.OutgoingMessage.write (_http_outgoing.js:426:15) 
    at Request.write (/Users/user/Projects/maxmc/node_modules/request/request.js:1514:27) 
    at end (/Users/user/Projects/maxmc/node_modules/request/request.js:552:18) 
    at Immediate._onImmediate (/Users/user/Projects/maxmc/node_modules/request/request.js:581:7) 
    at tryOnImmediate (timers.js:543:15) 
    at processImmediate [as _immediateCallback] (timers.js:523:5) 
error Command failed with exit code 1. 

私は問題が何であるか把握できません。

+0

あなたがそれは同じ返し、成功 –

答えて

0

を使用してみてください。この

//app.use(bodyParser.json()); 
//app.use(bodyParser.urlencoded({ extended: true })); 
0

次のコードを試してみてください

app.use('/v1', function(req, res) { 
    var url = process.env.API_URL + req.url; 
    console.info('Proxing to: ', url); 

    var r = null; 

    switch (req.method) { 
    case 'POST': 
     r = request.post({ 
     uri: url, 
     json: req.body 
     }); 
     return req.pipe(r).pipe(res); 
    case 'PUT': 
     r = request.put({ 
     uri: url, 
     json: req.body 
     }); 
     return req.pipe(r).pipe(res); 

    default: 
     r = request(url); 
     return req.pipe(r).pipe(res); 
    } 

    //console.log(r); 

    //return req.pipe(r).pipe(res); 
}); 

bodyParserミドルウェアの修正を削除このコード

+0

を取得する前に、要求を終了しているようですエラー – MrFoh

関連する問題