Firebase 函数:无法加载默认凭据

Firebase Functions: Could not load default credentials

我有一个订阅 Cloud PubSub 主题的 Firebase 函数。应用程序的初始化非常简单,如下所示:

import * as admin from 'firebase-admin';

admin.initializeApp();

我收到此错误:

“错误:无法加载默认凭据。浏览至 https://cloud.google.com/docs/authentication/getting-started 了解更多信息。 在 GoogleAuth.getApplicationDefaultAsync (/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 之后第一次 运行 时失败,并且可能在 "cold start."

上失败

不确定我做错了什么以及为什么它只会在第一个 运行 时失败。

已解决!这个答案帮助:

在一个 API 调用的 Firebase 函数中,我发布到 Cloud PubSub 主题,如下所示:

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

我没有在等待响应,而是立即将 2XX HTTP 响应发送回客户端。执行似乎继续正常,但显然没有按预期运行。

有时 API 响应调用本身会失败(并且永远不会发布消息),但有时不会。在其他情况下,发布会成功,但订阅主题的 Firebase 函数会失败!

在所有情况下,这似乎在 运行 脚本第二次执行后自行解决。因此,我仍然认为它与冷启动有关。

但是因为我把它改成了这样等待:

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

我还没有看到这个问题再次发生。