节点JS上的HTTP请求callback

嗨我想通过使用callback方法的http获得响应。 但是我得到一个错误,说callback不是一个函数。

module.exports.ipLookup = function (res, callback) { var http = require('http'); var str = ''; var options = { host: 'ip-api.com', port: 80, path: '/json/', method: 'POST' }; var str= ""; var req = http.request(options, function (res) { res.on('data', function (body) { str += body; }); res.on('end', function () { callback(str); }); }); req.end(); return str; } 

什么是应该通过ip-api.com返回json api响应。 如果任何人都可以帮助我,这将不胜感激。

在另一个文件中,您需要确保使用callback参数。 见下面的代码片段

 var Lookup = require('./ip'); Lookup.ipLookup(function (response) { console.log(response) // check if response is valid }) 

您需要将导出的函数更改为只接受一个参数,因为第一个参数在函数体内没有使用。

 module.exports.ipLookup = function (callback) { var http = require('http'); var str = ''; var options = { host: 'ip-api.com', port: 80, path: '/json/', method: 'POST' }; var req = http.request(options, function (res) { res.on('data', function (body) { str += body; }); res.on('end', function () { return callback(str); }); }); req.end(); }