2016-11-24 5 views
0

Ich bin ein echter Noob in JS und Node und versuche, eine JADE-Ansicht von JSON von einer REST-API empfangen zu rendern. Wenn ich die http.request als Standalone ausführen, funktioniert es gut, aber wenn ich mit dem Hinzufügen von Modulen und den Render-Staubfäden beginne, kann ich die http-Anfrage-Funktion nicht ausführen.HTTP-Anfrage wird nicht ausgeführt

Wenn ich es in Debug ausführen, springt es einfach zu der Endanweisung. Ich kann nicht herausfinden, warum.

jede Hilfe wäre wirklich geschätzt TIA.

var http = require('http'); 
 

 
module.exports = function() { 
 

 
    var options = { 
 
     host: '41.193.214.130', 
 
     port: 2510, 
 
     path: '/eiftidemo/clt_list', 
 
     method: 'GET' 
 
    }; 
 

 
    var clientsDatag; 
 

 
    http.request(options, function(res) { 
 
     var body = ''; 
 
     //none of these statemnst excecute 
 

 
     res.on('data', function(chunk) { 
 
      body += chunk; 
 
     }); 
 

 
     res.on('end', function() { 
 
      var clientsData = JSON.parse(body); 
 

 
      var clientsDatag = clientsData; 
 
      // this stament doesn't execute either 
 
      debugger; 
 

 
     }); 
 
    }).end(); 
 
    debugger; 
 
    res.render('listlxr', { 
 
     details: clientsDatag 
 
    }); 
 
};

hier ist das aufrufende Skript:

var express = require('express'); 
 
var bodyParser = require('body-parser'); 
 
var tweetList = require('./tweet-list'); 
 
var clientList = require('./lxr-clients') 
 
var app = express(); 
 

 
app.set('view engine', 'jade'); 
 
app.use(bodyParser.urlencoded({ 
 
    extended: false 
 
})) 
 

 

 
app.get('/', function(req, res) { 
 
    res.render('index'); 
 
}); 
 

 
app.post('/get_tweets', function(req, res) { 
 
    var screen_name = req.body.handle; 
 

 
    var tweets = tweetList(res, screen_name); 
 
}); 
 

 
app.get('/get_clients', function(req, res) { 
 

 
    var clientd = clientList(res, req); 
 
}); 
 

 
var server = app.listen(3000, function() { 
 
    console.log('Our App is running at http://localhost:3000'); 
 
});

vielen Dank an alle, die

Antwort

0

Versuchen Hinzufügen eines Fehler helfen kann -Handler und sehen Sie, wenn Sie etwas dorthin gelangen:

var request= http.request(options, function(res) {...}); 

request.on('error', function(err){ 
    // Handle error 
}); 
+0

Dank, ich – fastleap

1
app.get('/get_clients', function(req, res) { 

    var options = { 
     host: '41.193.214.130', 
     port: 2510, 
     path: '/eiftidemo/clt_list', 
     method: 'GET' 
    }; 

    http.request(options, function(details) { 
     res.render('listlxr', { 
      details: details 
     }); 
    }); 

}); 
+0

Eine kleine Erklärung tun würde helfen zu verstehen, die OP, warum sie nicht tun können, was sie (Asynchron-Reaktion) taten und würde Ihre Antwort viel besser beantworten. Sie könnten auch das externe Modul beibehalten, in dem der OP den Code hatte. – jfriend00

+0

Ich denke, das bedeutet, dass der Code direkt in das aufrufende Skript eingefügt wird. ich versuche das und viele thx trotzdem. – fastleap