返回未定义变量Javascript的函数

返回未定义变量Javascript的函数,javascript,node.js,Javascript,Node.js,在Javascript中,当我从另一个js文件调用此函数时,我的控制台输出中没有定义。我可以返回名为“obj”的json对象,而不必对其进行未定义吗 module.exports = { getTechnicPackInfo: function(id){ var http = require("https"); var options = { "method": "GET", "hostname": "solder.io", "path"

在Javascript中,当我从另一个js文件调用此函数时,我的控制台输出中没有定义。我可以返回名为“obj”的json对象,而不必对其进行未定义吗

module.exports = {
  getTechnicPackInfo: function(id){
    var http = require("https");

    var options = {
      "method": "GET",
      "hostname": "solder.io",
      "path": "/api/aurora-crafters/modpacks/" + id,
      "headers": {
        "accept": "application/json",
        "content-type": "application/Json",
        "authorization": "Bearer 00000000000000000000000000000"
      }
    };

    var req = http.request(options, function (res) {
      var chunks = [];
      res.on("data", function (chunk) {
        chunks.push(chunk);
      });

      res.on("end", function () {
        var body = Buffer.concat(chunks);
        var obj = JSON.parse(body);    
        return obj; 
      });
    });

    req.end();
  }
}
你什么也没还 您遇到的问题是由于没有从函数
getTechnicPackInfo
返回任何值,而不是从内部函数返回任何值

您要做的是使用
fetch
api来获取您试图获取的所有内容,并返回
fetch
返回的值。这允许您执行以下操作:

getTechnicPackInfo(...).then(resultingData => resultingData.json()).then(parsedData => ...)
这是因为
fetch
返回一个
Promise
,允许您使用
.json
解析数据(它有自己的功能,因为您不能简单地执行
json.parse
),它返回另一个
Promise


默认情况下,
fetch
在节点中不存在
fetch
不是node.js中内置的默认函数,因此安装后必须导入它

命令行: Node.js:
您没有从getTechnicPackInfo函数返回任何内容


您可以使用util.promisify发送http请求,然后返回承诺

上面的回答是正确的,但节点env中不存在api获取,需要添加模块npm:”

如果不想安装此模块,解决方案是向函数getTechnicPackInfo()添加回调参数:

file1.js:

file2.js


为什么要返回函数调用?你不应该只是返回obj吗?抱歉忘了删除它,当我粘贴到这里时它是错误的,可能是Okay的副本,我会修复它。
npm install --save node-fetch
import fetch from 'node-fetch';
module.exports = {
    getTechnicPackInfo: function(id, callback){
        var http = require("https");
        var options = {
            "method": "GET",
            "hostname": "solder.io",
            "path": "/api/aurora-crafters/modpacks/" + id,
            "headers": {
                "accept": "application/json",
                "content-type": "application/Json",
                "authorization": "Bearer 00000000000000000000000000000"
            }
        };
        var req = http.request(options, function (res) {
            var chunks = [];

            res.on("data", function (chunk) {
                chunks.push(chunk);
            });

            res.on("end", function () {
                var body = Buffer.concat(chunks);
                var obj = JSON.parse(body);    
                callback(obj); 
            });
        });
        req.end();
    }
}
var f = require('./file1.js');
f.getTechnicPackInfo(123456, function(obj) {
    //do what you need with obj
})