В этом коде довольно много ошибок, из-за которых становится ясно, что вам необходимо проанализировать, как работает асинхронный поток кода.Вы вызываете makeRequest до того, как он определен, и вы пытаетесь вернуть значение из вашего ответного обратного вызова в http.get, которое не будет работать.Вам также не хватает ключевых слов 'var'.
Основная проблема, которую я вижу помимо этого, заключается в том, что вы передаете свои аргументы URL в теле запроса, что не будет работать.Во-вторых, вы вызываете req.write и req.end после того, как запрос уже завершен внутри http.get.А JSON.stringify - совершенно неправильный способ генерации параметров URL.
Вот базовый метод запроса, который будет работать
var url = require('url');
var http = require('http');
function makeRequest(host, path, args, cb) {
var options = {
host: host,
port: 80,
path: url.format({ pathname: path, query: args})
};
http.get(options, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
cb(body);
});
});
};
var searchJSON = {
location: 'NYC',
text: "text",
authID: "apiKey"
};
makeRequest('somesite.com', '/', searchJSON, function(data) {
console.log(data);
});