我有一个Firebase函数,该函数订阅了Cloud PubSub主题。应用程序的初始化非常简单,如下所示:
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
之后并可能在“冷启动”后首次运行失败。
不知道我在做什么错以及为什么它只会在第一次运行时失败。
答案 0 :(得分:3)
已解决!这个答案有帮助: Error: Could not load the default credentials (Firebase function to firestore)
从Firebase函数中进行API调用,我正在发布到Cloud PubSub主题,如下所示:
pubsub.topic(topicName).publish(dataBuffer, customAttributes)
我没有等待响应,而是立即将2XX HTTP响应发送回客户端。执行似乎可以继续进行,但是显然它的行为不符合预期。
有时,API响应调用本身将失败(并且从不发布消息),但有时不会失败。在其他情况下,发布将成功,但是订阅该主题的Firebase函数将失败!
在所有情况下,这似乎在第二次运行脚本后即可解决。因此,我仍然认为这与冷启动有关。
但是由于我将其更改为等待:
await pubsub.topic(topicName).publish(dataBuffer, customAttributes)
我还没有看到这个问题再次发生。