node.js - “无法加载默认凭据”- 使用模拟器的 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 组件不适用于模拟器,而是直接连接到云服务。有没有办法让这些客户端连接到模拟器而不是云?我找不到任何...谢谢!
解决方案
我发现了如何解决这个问题:PublisherClient 和 SubscriberClient 构造函数都有设置模拟器路径的选项。选项是servicePath
和port
。您还需要有效的凭据才能传递给使用模块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