首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每当使用使用response对象的API时,总是得到"response is not defined“错误

每当使用使用response对象的API时,总是得到"response is not defined“错误
EN

Stack Overflow用户
提问于 2020-06-27 12:43:01
回答 2查看 42关注 0票数 0

我正在使用Steam Developer API来创建一个不一致的机器人。我正在使用ISteamUser的ResolveVanityURL调用,它可以正确调用。然而,当我试图在我的代码中使用它时,它总是声明"response is not defined“。调用的输出非常简单,如下所示:

我的代码片段如下:

代码语言:javascript
复制
let { vanityURL } = superagent
            .get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`);
        console.log(vanityURL.response.steamid)

本质上,我使用我的Discord机器人中的参数调用API,以从Vanity URL获取Steam ID。它调用时没有错误,但是当我像上面看到的那样尝试console.log它时,它给出了这个错误:(node:14580) UnhandledPromiseRejectionWarning: ReferenceError: response is not defined

我怎样才能让这个错误不再继续呢?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-06-27 12:56:59

您应该使用promise来获得响应:

代码语言:javascript
复制
let { vanityURL } = superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`)
        .then(res => console.log(res));

注意,在使用get之后,使用then来解析promise。

票数 1
EN

Stack Overflow用户

发布于 2020-06-27 13:05:50

首先,superagent.get()是异步的,因此如果您想要直接将变量分配给响应,则需要添加await。使用您当前的代码,它试图从promise中解构vanityURL,这显然是未定义的

代码语言:javascript
复制
let { vanityURL } = await superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`);

第二,vanityURL从何而来?它是调用的另一个属性吗?无论哪种方式,你的steamid都在response属性中,所以你需要解构它:

代码语言:javascript
复制
let { response, vanityURL } = await superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`);

在此之后,您只需在响应上调用.steamid

代码语言:javascript
复制
console.log(response.steamid);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62605950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档