Firebase 云功能:获取应用程序默认凭据时出现意外错误。无法加载默认凭据

Firebase cloud functions: Unexpected error while acquiring application default credentials. Could not load the default credentials

我正在开发一个带有 nativescript 和 firebase 的跨平台应用程序,我有一些云函数触发了 onCreate 和 onWrite 但是当这些函数是 "cold"(在长时间不活动之后)我大部分时间都会遇到这个错误时间和功能无法正常执行。不过,以下请求确实有效。

Error: Unexpected error while acquiring application default credentials: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.
at GoogleAuth.<anonymous> (/user_code/node_modules/firebase-admin/node_modules/google-auth-library/build/src/auth/googleauth.js:229:31)
at step (/user_code/node_modules/firebase-admin/node_modules/google-auth-library/build/src/auth/googleauth.js:47:23)
at Object.next (/user_code/node_modules/firebase-admin/node_modules/google-auth-library/build/src/auth/googleauth.js:28:53)
at fulfilled (/user_code/node_modules/firebase-admin/node_modules/google-auth-library/build/src/auth/googleauth.js:19:58)
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我的前三行 functions.js 看起来像这样(如文档中所示):

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

我试过使用从控制台生成的 service_account 文件(如 所述),但后来我得到了一个不同的错误,我猜这是因为我是 运行它在 Google 的服务器上,而不是我自己托管的。

知道为什么会发生这种情况以及如何防止这种情况吗?

使用新的 firebase-functions 1.x SDK,您可以像这样初始化 Admin SDK:

const admin = require('firebase-admin');
admin.initializeApp();

确保您使用的是该模块的最新版本。