Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;无法加载默认凭据";-使用Emulator的PubSub Node.js模块_Node.js_Google Cloud Platform_Google Cloud Pubsub - Fatal编程技术网

&引用;无法加载默认凭据";-使用Emulator的PubSub Node.js模块

&引用;无法加载默认凭据";-使用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

我对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时,就会发生此错误:

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);