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

我的代码片段如下:
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。
我怎样才能让这个错误不再继续呢?谢谢。
发布于 2020-06-27 12:56:59
您应该使用promise来获得响应:
let { vanityURL } = superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`)
.then(res => console.log(res));注意,在使用get之后,使用then来解析promise。
发布于 2020-06-27 13:05:50
首先,superagent.get()是异步的,因此如果您想要直接将变量分配给响应,则需要添加await。使用您当前的代码,它试图从promise中解构vanityURL,这显然是未定义的
let { vanityURL } = await superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`);第二,vanityURL从何而来?它是调用的另一个属性吗?无论哪种方式,你的steamid都在response属性中,所以你需要解构它:
let { response, vanityURL } = await superagent.get(`http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key=${stApiKey}&vanityurl=${args[0]}`);在此之后,您只需在响应上调用.steamid:
console.log(response.steamid);https://stackoverflow.com/questions/62605950
复制相似问题