You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用twitter-API-client报ERR_UNHANDLED_REJECTION错误

问题产生原因
  • 直接触发报错的核心原因是异步Promise异常未被捕获:async声明的函数返回值本质是Promise对象,当函数内部await调用的followersList接口请求因为任意原因失败时,Promise会进入rejected状态,但你的代码既没有在函数内部通过try/catch捕获异常,也没有在函数调用时挂载.catch()处理拒绝逻辑,Node.js v8.x版本默认会对未处理的Promise拒绝抛出ERR_UNHANDLED_REJECTION错误,直接终止运行进程。
  • 你当前看到的报错只是Node.js的异常提示,不是Twitter接口返回的真实错误:真实的接口错误(比如鉴权失败、权限不足、频率超限等)被未捕获的Promise隐藏了,没有打印输出,无法直接定位根因。
修复方案
  • 第一步先给异步逻辑添加完整的异常捕获,把真实的接口错误打印出来定位根因,同时补充必要参数确保拉取到的是最新的关注者数据,修复后的参考代码如下:
async function get_followers() {
  try {
    const followers = await twitterClient.accountsAndUsers.followersList({
      count: 3,
      cursor: -1, // 指定拉取第一页数据,也就是按关注时间倒序排列的最新关注者
      skip_status: true // 可选配置,不需要返回用户最新推文时添加,减少冗余数据传输
    });
    console.log('最近3位关注者数据:', followers.users);
  } catch (err) {
    console.error('接口请求失败,具体错误信息:', err);
  }
}

// 调用时补充兜底catch,覆盖try块未捕获的边缘异常
get_followers().catch(err => {
  console.error('函数执行异常:', err);
});
  • 运行加了异常捕获的代码后,根据打印出的真实错误信息针对性排查问题:
    • 如果返回401状态码:检查初始化twitterClient时传入的API Key、API Secret、Access Token、Access Token Secret是否和Twitter开发者后台配置一致,确认令牌没有过期、没有被吊销
    • 如果返回403状态码:检查开发者账号下的对应应用是否开启了用户数据读取权限,是否符合Twitter API的访问规则
    • 如果返回429状态码:说明触发了接口请求频率限制,等限制窗口重置后再发起请求即可

内容的提问来源于stack exchange,提问作者Gambhir Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:51:30