【问题标题】:Undefined in Node.js API request function's returnNode.js API 请求函数的返回中未定义
【发布时间】:2021-09-29 21:09:51
【问题描述】:

我一直在尝试许多解决方案,但没有任何帮助...我有函数,它执行 GET API 请求并返回 JSON 解析响应。 Console.log 工作并返回解析的响应,但是当我用 return 替换它时,它停止工作并记录“响应未定义”。我还尝试在函数之外声明“dt”。


function apiRequest(apiPath) {
const https = require(nodeprotocol);
var req = https.request(apiPath, res => {
    res.on('data', dt => {
    return JSON.parse(dt); // edited from: return dt;
    });
});

req.on('error', error => {
  console.error(error);
});
req.end();
}

console.log('Response is ' + apiRequest('api data here'));

感谢您的建议

【问题讨论】:

    标签: node.js api variables request undefined


    【解决方案1】:

    您似乎没有发回正确的请求。您可能希望将响应作为 json 发送,而不是 return dt。可能看起来像这样:

    var req = https.request(apiPath, res => {
        res.on('data', dt => {
            res.json(dt);
        });
    });
    

    【讨论】:

    • 你是对的,但它对我说 json() 不是一个函数。我将其编辑为“返回 JSON.parse(dt)”,当我使用 console.log 时,这对我有用,而不是返回,但我希望函数 apiRequest 返回 JSON 解析的响应,以便我可以使用它跨度>
    • 你的回调代码中返回的res不是express'es res,只是需要更改var名称
    • 喜欢这个? @LawrenceCherone function apiRequest(apiPath) { const https = require(nodeprotocol); var req = https.request(apiPath, inside => { inside.on('data', dt => { return JSON.parse(dt); }); }); req.on('error', error => { console.error(error); }); req.end(); } console.log('Height is ' + apiRequest('/abc/def'));
    • 它仍然导致“高度未定义”。我认为我的问题是变量 dt 在函数外部未定义,但我不知道该怎么做
    猜你喜欢
    • 2018-08-09
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多