使用异步和递归的 JS 程序卡在主进程中

JS Program using Async & Recursion gets stuck in Main process

我正在尝试检索项目中的 Firebase 用户。我可以检索它们,但主程序 永远不会结束 。我使用 VS Code 或 运行 带有 npm 运行 的脚本进行调试,但它在两种情况下都卡住了。在 VS Code 中,堆栈上什么都没有留下……它永远不会停止

**用户函数(returns用户没有问题)

admin.auth().listUsers returns 具有属性 nextPageToken 和 [=22] 的 listUsersResult 对象=]用户数组

const BATCH_SIZE = 2;

const listAllUsers = async (nextPageToken = undefined) => {
  let listUsersResult = await admin.auth().listUsers(BATCH_SIZE, nextPageToken);

  if (listUsersResult.pageToken) {
    return listUsersResult.users.concat(await listAllUsers(listUsersResult.pageToken));
  } else {
    return listUsersResult.users;
  }
};

Main Routine(这是卡住的那个)

const uploadUsersMain = async () => {
  try {

    // if I comment out this call, then there is no problem
    let firestoreUsers = await listAllUsers();
  } catch(error) {
   log.error(`Unable to retrieve users ${error}`)
}
finally {
    // do stuff
  }
}

uploadUsersMain();

阻止主程序结束的问题可能是什么?我应该寻找什么?谢谢

要关闭您的脚本,您应该使用

await admin.app().delete();
只要有句柄,

Node.js 就会安静地留在 运行,句柄可以是任何东西 — 当然是网络套接字。

您也可以使用 process.exit(),但最好正确关闭 SDK,而不是在可能未完成时突然退出。