首页 > 解决方案 > “无法加载默认凭据”- 使用模拟器的 PubSub Node.js 模块

问题描述

我在使用 Node.js 的 PubSub 模块时遇到问题。我使用 Docker 和 PubSub 模拟器创建了一个本地环境。我能够发布消息并使用异步拉取来检索它(如此处所述:https ://cloud.google.com/pubsub/docs/pull#asynchronous-pull )。但是,当我尝试使用同步拉取(https://cloud.google.com/pubsub/docs/pull#synchronous-pull)时,我一直遇到以下错误:

错误:无法加载默认凭据。浏览到 https://cloud.google.com/docs/authentication/getting-started了解更多信息。在 Google 身份验证。(/var/code/node_modules/google-auth-library/build/src/auth/googleauth.js:167:23)在下一个(本机)完成时(/var/code/node_modules/google-auth-library/build /src/auth/googleauth.js:19:58) 在 process._tickCallback (internal/process/next_tick.js:109:7) (node:493) PromiseRejectionHandledWarning: Promise 拒绝被异步处理 (rejection id: 32)

每当我尝试实例化 v1 PublisherClient 或 SubscriberClient 时都会发生此错误:

const pubsub = require('@google-cloud/pubsub');

new pubsub.v1.PublisherClient();
new pubsub.v1.SubscriberClient();

我觉得 v1 组件不适用于模拟器,而是直接连接到云服务。有没有办法让这些客户端连接到模拟器而不是云?我找不到任何...谢谢!

标签: node.jsgoogle-cloud-platformgoogle-cloud-pubsub

解决方案


我发现了如何解决这个问题:PublisherClient 和 SubscriberClient 构造函数都有设置模拟器路径的选项。选项是servicePathport。您还需要有效的凭据才能传递给使用模块sslCreds生成的选项。grpc下面是一个示例:

const grpc = require('grpc');

const subscriber = new pubsub.v1.SubscriberClient({
  servicePath: 'path.to.your.emulator',
  port: 8080, // port your emulator is running on (default is 443)
  sslCreds: grpc.credentials.createInsecure()
});

这是完整的答案:https ://github.com/googleapis/nodejs-pubsub/issues/346


推荐阅读