首页 > 解决方案 > 每当使用使用响应对象的 API 时,始终出现“未定义响应”错误

问题描述

我正在使用 Steam 开发者 API 创建 Discord Bot。我正在使用 ISteamUser 的 ResolveVanityURL 调用,它调用正确。但是,当我尝试在我的代码中使用它时,它总是指出“未定义响应”。调用的输出非常简单,如下所示:

在此处输入图像描述

我的代码片段如下:

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

我怎样才能做到这一点,所以这个错误不会继续?谢谢。

标签: javascriptnode.jsdiscorddiscord.js

解决方案


首先superagent.get()是异步的,所以如果你想直接为响应分配一个变量,你需要添加等待。使用您当前的代码,它试图vanityURL从一个明显未定义的承诺中解构

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

其次,vanityURL 是从哪里来的?它是通话的另一个属性吗?无论哪种方式,您的 steamid 都在响应属性内,因此您需要解构它:

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

之后,您可以调用.steamid响应:

console.log(response.steamid);

推荐阅读