2016-11-24 94 views
0

我是JS和Node中真正的noob,並且試圖從REST API接收的JSON呈現JADE視圖。當我作爲一個獨立運行http.request它工作得很好,但是當我開始添加模塊和渲染雄蕊時,我無法獲得http請求函數來執行。http請求將不會執行

當我在調試中運行它時,它只是跳到結束語句。我無法弄清楚爲什麼。

任何幫助將非常感激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 
 
    }); 
 
};

這裏是調用腳本:

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'); 
 
});

許多感謝的人誰可以幫助

回答

0

嘗試增加一個錯誤-handler,看看你得到任何東西有:

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

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

謝謝,我會做 – 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

一點解釋將有助於OP明白,爲什麼他們不能做他們在做什麼(異步響應),並會使你的答案好多了。您也可能仍然保留OP有代碼的外部模塊。 – jfriend00

+0

我認爲這意味着直接將代碼添加到調用腳本中。無論如何,生病嘗試和許多thx。 – fastleap