首页 > 解决方案 > GCP Pubsub Nodejs 客户端承诺挂起,客户端冻结,没有错误

问题描述

使用 Google 的 Pub/Sub Node 客户端库针对您的项目,Promise 挂起且没有错误。

例子:

const { PubSub } = require("@google-cloud/pubsub");

async function start() {
  const pubsubClient = new PubSub({ projectId: "my-project-id" });

  try {
    const [topics] = await pubsubClient.getTopics();
    console.log(topics);
  } catch (error) {
    console.error(error);
  }
}
start().catch(console.error);

不会返回错误,也不会显示任何进度。最终客户端在 10 分钟后超时。不会返回任何主题。发布到主题等也是如此。

标签: node.jsgoogle-cloud-pubsub

解决方案


如果您使用模拟器 pubsub 进行本地开发,则您已设置PUBSUB_EMULATOR_HOST变量。由于某种原因,它导致了这个问题。将其从您的环境中unset PUBSUB_EMULATOR_HOST删除或从您的.env文件中删除,然后重新启动服务器。

您可以检查它是否printenv在您的 shell 中设置(或从节点应用程序运行exec以检查)

有一个已知问题并且有相关的 Github 问题,所以如果你遇到这个答案并且它有帮助,请随时在此处让维护人员知道: https ://github.com/googleapis/nodejs-pubsub/issues/339 或在这里: https ://github.com/googleapis/gax-nodejs/issues/208 因为它似乎不会影响很多人,所以无法修复。


推荐阅读