如何通过Discord API直接获取用户信息?解决代码报错问题
解决Discord API获取用户信息的报错问题
核心错误修复步骤
- 移除多余的JSON解析操作:
response.json()本身就是异步解析好的JavaScript对象,不需要再用JSON.parse()包裹,这是引发语法错误的直接原因。 - 正确处理异步调用:async函数返回Promise对象,必须用
await(需在async上下文内)或.then()链式调用才能拿到实际结果,直接打印会输出处于pending状态的Promise。 - 替换占位符内容:将URL中的
(USER ID)替换为目标用户的实际ID,将(BOT TOKEN)替换为你的Discord机器人令牌。
修正后的完整代码
const fetchUser = async id => { const response = await fetch(`https://discord.com/api/v9/users/${id}`, { headers: { 'Authorization': 'Bot YOUR_BOT_TOKEN_HERE' } }); // 校验请求状态,避免无效响应导致后续出错 if (!response.ok) { throw new Error(`请求失败: ${response.statusText}`); } return response.json(); }; // 用自执行async函数处理await调用 (async () => { try { const userInfo = await fetchUser('123456789012345678'); // 替换为目标用户ID console.log(userInfo); } catch (err) { console.error('获取用户信息出错:', err); } })();
错误原因详解
Promise { <pending> }提示:async函数调用后会立刻返回Promise对象,此时异步请求还未完成,直接打印就会显示pending状态,必须等待Promise完成才能获取到用户数据。- JSON解析语法错误:
response.json()已经把响应体解析成了JS对象,你再用JSON.parse()去解析这个对象,会先将对象转为字符串[object Object],这并非合法的JSON格式,因此抛出语法错误。
内容的提问来源于stack exchange,提问作者Dev03
相关产品推荐
相关产品推荐

