2016-11-24 96 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