Функции Firebase: не удалось загрузить учетные данные по умолчанию - PullRequest
1 голос
/ 11 января 2020

У меня есть функция Firebase, которая подписывается на Cloud PubSub topi c. Приложение инициализируется очень просто:

import * as admin from 'firebase-admin';

admin.initializeApp();

Я получаю эту ошибку:

"Ошибка: не удалось загрузить учетные данные по умолчанию. Перейдите к https://cloud.google.com/docs/authentication/getting-started для получения дополнительной информации. в GoogleAuth.getApplicationDefaultAsyn c (/srv/functions/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19) в process._tickCallback (internal / process) /next_tick.js:68:7)"

Вот странная вещь. Обычно это работает. Другими словами, если я запускаю его во второй раз, это работает. И в третий раз. Чаще всего кажется, что он выходит из строя при первом запуске после нового firebase deploy и, возможно, при «холодном старте».

Не уверен, что я делаю неправильно, и почему он не работает только при первом запуске .

1 Ответ

3 голосов
/ 11 января 2020

РЕШИТЬ! Этот ответ помог: Ошибка: не удалось загрузить учетные данные по умолчанию (функция Firebase в firestore)

Изнутри функции Firebase для вызова API я публиковал в Cloud PubSub topi c вот так:

pubsub.topic(topicName).publish(dataBuffer, customAttributes)

Я не ожидал ответа и немедленно отправлял ответ 2XX HTTP обратно клиенту. Казалось, что выполнение продолжается нормально, но, очевидно, оно не ведет себя так, как задумано.

Иногда сам ответный вызов API завершается ошибкой (и никогда не публикует sh сообщение), но иногда нет , В других случаях публикация sh будет успешной, но функция Firebase, подписывающаяся на topi c, не будет работать!

Во всех случаях это, похоже, разрешается после повторного запуска сценария. По этой причине я все еще верю, что это как-то связано с холодным стартом.

Но с тех пор, как я изменил его, чтобы ждать так:

await pubsub.topic(topicName).publish(dataBuffer, customAttributes)

Я не видел, чтобы эта проблема повторилась .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...