2016-07-10 9 views
1

Ich habe den folgenden Code, aber ich bekomme HTTP 500 Fehler und die Seite wird an error.ejs umgeleitet.ExpressJS zu ejs, bekommen HTTP 500 Fehler

Die console.log (Körper) funktioniert jedoch einwandfrei. Das Problem wird in res.render gesehen. Ich bin nicht in der Lage einen Fehler in der Konsole zu sehen (Versucht durch die env = Entwicklung zu Einstellung)

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;

Antwort

3

Das Problem hierbei ist, dass res.render ausgeführt wird, bevor request Aufruf abgeschlossen ist. Denken Sie daran, dass request asynchron ist. Das Update ist res.render innerhalb request Rückruf

.... 
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

Ehrfürchtig und Dank einer Tonne zu bewegen! Das funktioniert wie ein Zauber. –

+0

Für einige Anfragen sehe ich immer noch einen HTTP 500 Fehler. (console.log (Ergebnis) funktioniert gut). Irgendwelche Hinweise bitte? –