&引用;无法加载默认凭据";-使用Emulator的PubSub Node.js模块
我对Node.js的PubSub模块有问题。我已经使用Docker和PubSub模拟器创建了一个本地环境。我能够发布消息并使用异步拉取(如本文所述:)检索它。但是,当我尝试使用同步pull()时,我始终出现以下错误: 错误:无法加载默认凭据。浏览到 更多 信息。在古格里斯。 (/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) 在进程中。_tick回调(内部/process/next_tick.js:109:7) (节点:493)PromisejectionHandledWarning:承诺拒绝被拒绝 异步处理(拒绝id:32) 每当我尝试实例化v1 PublisherClient或SubscriberClient时,就会发生此错误:&引用;无法加载默认凭据";-使用Emulator的PubSub Node.js模块,node.js,google-cloud-platform,google-cloud-pubsub,Node.js,Google Cloud Platform,Google Cloud Pubsub,我对Node.js的PubSub模块有问题。我已经使用Docker和PubSub模拟器创建了一个本地环境。我能够发布消息并使用异步拉取(如本文所述:)检索它。但是,当我尝试使用同步pull()时,我始终出现以下错误: 错误:无法加载默认凭据。浏览到 更多 信息。在古格里斯。 (/var/code/node_modules/google auth library/build/src/auth/googleauth.js:167:23) 在下一个(本地)在 (/var/code/node_modul
const pubsub = require('@google-cloud/pubsub');
new pubsub.v1.PublisherClient();
new pubsub.v1.SubscriberClient();
我觉得v1组件不能与emulator一起工作,而是直接连接到云服务。
有没有办法让这些客户端连接到模拟器而不是云?我找不到任何。。。
谢谢 我发现了如何解决这个问题:PublisherClient和SubscriberClient构造函数都有设置模拟器路径的选项。这些选项是
servicePath
和port
。您还需要有效凭证才能传递到使用grpc
模块生成的sslCreds
选项。以下是一个示例:
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()
});
以下是完整的答案:以下TS示例似乎适合我
import { PubSub, v1 } from "@google-cloud/pubsub";
import * as gax from "google-gax";
if (process.env.PUBSUB_EMULATOR_HOST) {
const pieces = process.env.PUBSUB_EMULATOR_HOST.split(":");
options = {
servicePath: pieces[0],
port: pieces[1],
isEmulator: true,
sslCreds: gax.grpc.credentials.createInsecure(),
};
}
const subClient = new v1.SubscriberClient(options);