Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase函数:无法加载默认凭据_Firebase_Google Cloud Functions_Google Cloud Pubsub_Firebase Admin - Fatal编程技术网

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

Firebase函数:无法加载默认凭据,firebase,google-cloud-functions,google-cloud-pubsub,firebase-admin,Firebase,Google Cloud Functions,Google Cloud Pubsub,Firebase Admin,我有一个Firebase函数,它订阅了一个子主题。应用程序的初始化非常简单,如下所示: import * as admin from 'firebase-admin'; admin.initializeApp(); 我得到了这个错误: “错误:无法加载默认凭据。有关详细信息,请浏览至。”。 位于GoogleAuth.getApplicationDefaultAsync(/srv/functions/node_modules/google auth library/build/src/auth

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

import * as admin from 'firebase-admin';

admin.initializeApp();
我得到了这个错误:

“错误:无法加载默认凭据。有关详细信息,请浏览至。”。 位于GoogleAuth.getApplicationDefaultAsync(/srv/functions/node_modules/google auth library/build/src/auth/GoogleAuth.js:161:19) 在进程中。_tick回调(内部/process/next_tick.js:68:7)”

奇怪的是。它通常是有效的。换句话说,如果我第二次触发它,它就会工作。第三次。最常见的情况是,它在新的
firebase部署之后第一次运行时,可能是在“冷启动”时失败


不知道我做错了什么,为什么只有在第一次运行时才会失败。

解决了!这个答案有助于:

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

pubsub.topic(topicName).publish(dataBuffer, customAttributes)
await pubsub.topic(topicName).publish(dataBuffer, customAttributes)
我没有等待响应,而是立即将2XX HTTP响应发送回客户端。死刑似乎仍在继续,但显然没有按预期执行

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

在所有情况下,在第二次运行脚本后,这似乎都会自行解决。出于这个原因,我仍然认为这与冷启动有关

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

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

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

解决了!这个答案有助于:

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

pubsub.topic(topicName).publish(dataBuffer, customAttributes)
await pubsub.topic(topicName).publish(dataBuffer, customAttributes)
我没有等待响应,而是立即将2XX HTTP响应发送回客户端。死刑似乎仍在继续,但显然没有按预期执行

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

在所有情况下,在第二次运行脚本后,这似乎都会自行解决。出于这个原因,我仍然认为这与冷启动有关

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

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

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

如果你做一次测试,你会发现它经常出现。我建议做一些研究,找出什么样的事情适合不同的人。确保您的模块都是最新的。尝试Node8和Node10运行时。我看到的大部分内容都是添加服务帐户json文件。诚然,我还没有这样做。然而,这似乎没有必要。我不把它用在其他任何事情上,而当我第一次执行它失败时,它会在一分钟后再次执行。继续好下去。。。直到我部署新的更新。然后它第一次又失败了。我不理解不一致性。你不应该添加其他服务帐户-默认的服务帐户应该是可用的。问题可能在于正在使用的库的特定版本,或者运行时的选择。如果无法缩小范围,请联系Firebase支持部门寻求帮助。我以为我已经解决了,但结果只是有点断断续续。但是,始终在第一次尝试后工作(使用相同的请求)。我相信这与“冷启动”有关,因为我在今晚早些时候的日志中看到了一些东西,在几个小时的不活动后发生了这种情况。似乎与此相关:如果你做了一个测试,你会发现它出现了很多。我建议做一些研究,找出什么样的事情适合不同的人。确保您的模块都是最新的。尝试Node8和Node10运行时。我看到的大部分内容都是添加服务帐户json文件。诚然,我还没有这样做。然而,这似乎没有必要。我不把它用在其他任何事情上,而当我第一次执行它失败时,它会在一分钟后再次执行。继续好下去。。。直到我部署新的更新。然后它第一次又失败了。我不理解不一致性。你不应该添加其他服务帐户-默认的服务帐户应该是可用的。问题可能在于正在使用的库的特定版本,或者运行时的选择。如果无法缩小范围,请联系Firebase支持部门寻求帮助。我以为我已经解决了,但结果只是有点断断续续。但是,始终在第一次尝试后工作(使用相同的请求)。我相信这与“冷启动”有关,因为我在今晚早些时候的日志中看到了一些东西,在几个小时的不活动后发生了这种情况。似乎与此有关: