2016-07-10 3 views
1

次のコードがありますが、HTTP 500エラーが発生していて、そのページがerror.ejsにリダイレクトされています。ExpressJSからejsへのHTTP 500エラーの受信

ただし、console.log(body)は正常に動作します。問題はres.renderで見られています。私はここでの問題は、request呼び出しが完了する前にres.renderが実行されていることである

var express = require('express'); 
 
var router = express.Router(); 
 

 
var request = require('request'); 
 

 
/* GET home page. */ 
 
router.get('/', function(req, res, next) { 
 

 
    // Set the headers 
 
    var headers = { 
 
    'Subscription-Key': 'XXXXXXXX', 
 
    'Content-Type': 'application/x-www-form-urlencoded' 
 
    } 
 

 
    // Configure the request 
 
    var options = { 
 
    url: 'http://External_Web_Service_REST_URL', 
 
    method: 'GET', 
 
    headers: headers 
 
    } 
 

 
    var result; 
 

 
    // Start the request 
 
    request(options, function(error, response, body) { 
 
    if (!error && response.statusCode == 200) { 
 
     // Print out the response body 
 
     result = body; 
 
     console.log(result); //This works 
 
    } 
 
    }) 
 

 
    res.render('in', { 
 
    title: JSON.parse(result) 
 
    }); //Problem seen here, No logs printed 
 
}); 
 

 

 
module.exports = router;

答えて

3

(あまりにもENV =開発を設定することで、試してみました)コンソール内の任意のエラーを見ることができないんです。 requestが非同期であることを覚えておいてください。修正はres.renderコールバックrequest内部

.... 
router.get('/', function(req, res, next) { 
    ... 
    request(options, function(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     // Print out the response body 
     result = body; 
     console.log(result); //This works 

     //respond from here 
     res.render('in', { 
     .parse(result) 
     }); 
    } else { 
     res.render('error'); 
    } 
    }) 
}) 

module.exports = router; 
+0

素晴らしいと感謝トンを移動することです!これは魅力のように機能します。 –

+0

いくつかのリクエストでは、まだHTTP 500エラーが表示されます。 (console.log(result)は正常に動作します)。すべてのポインタをお願いしますか? –

関連する問題