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

NodeJS应用调用Microsoft Graph客户端时await未等待请求完成问题

问题排查与解决方法

1. 修正authProvider的错误写法

你当前的authProvider写法存在逻辑错误,不符合Microsoft Graph JS SDK的要求:
你写的箭头函数内部的getAccessToken: () => {}属于JS标签语法,并没有返回带getAccessToken方法的合法对象,SDK无法正常获取访问令牌,会导致请求一直处于等待身份信息的挂起状态。
正确写法如下:

// 直接返回带getAccessToken方法的对象即可
const authProvider = {
  getAccessToken: () => {
    return accessToken;
  }
};

// 如果需要异步获取token,可改成异步方法
const authProvider = {
  getAccessToken: async () => {
    // 可在此处添加获取token的异步逻辑
    return accessToken;
  }
};

2. 检查上层调用逻辑是否等待异步函数执行完成

createGroup是异步函数,如果你上层调用时没有加await,也没有通过.then()监听执行状态,Node.js事件循环会判定没有待处理的任务,在Graph请求返回前就直接退出进程,自然不会打印end2或demo3。
错误调用示例:

// 没有加await,函数还没执行完进程就退出
createGroup(url, '测试组', token, ownerId);

正确调用示例:

// 方式1:使用await(需要放在async函数内部)
async function main() {
  const result = await createGroup(url, '测试组', token, ownerId);
  console.log('函数执行完成', result);
}
main();

// 方式2:使用.then().catch()处理
createGroup(url, '测试组', token, ownerId)
  .then(res => console.log('执行成功', res))
  .catch(err => console.log('执行失败', err));

3. 附加排查项

  • 检查传入的accessToken是否有效,是否拥有创建Group的相关权限(Group.Create等应用权限)
  • 可以给SDK开启调试日志,定位请求各阶段的问题:
const client = graph.Client.init({
  authProvider,
  debugLogging: true
})
  • 检查当前网络是否能正常访问graph.microsoft.com,是否存在代理或防火墙拦截请求的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:57:00