«Не удалось загрузить учетные данные по умолчанию» - модуль PubSub Node.js с использованием эмулятора - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблема с модулем PubSub для Node.js.Я создал локальную среду, используя 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 в GoogleAuth. (/ 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) в процессе._tickCallback (internal / process / next_tick.js: 109: 7) (узел: 493) PromiseRejectionHandledWarning: Отклонение обещания обрабатывалось асинхронно (идентификатор отклонения: 32)

Эта ошибка возникает всякий раз, когда я пытаюсьсоздание экземпляра v1 PublisherClient или SubscriberClient:

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

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

Мне кажется, что компоненты v1 не работают с эмулятором, а вместо этого подключаются напрямую к облачным службам. Есть ли способ заставить эти клиенты подключаться к эмулятору?Атор, а не облако?Я не могу найти ... Спасибо!

1 Ответ

0 голосов
/ 07 января 2019

Я узнал, как решить эту проблему: у конструкторов 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

...