由于 'Firebase App name '[DEFAULT]' 已经存在',无法破坏 Firebase 连接使热 Lambda 失败

Cannot destroy Firebase connections making hot Lambda fail due to 'Firebase App name '[DEFAULT]' already exists'

几个小时以来我一直在尝试我能想到的每一种方法。

基本上我是 运行 一个 AWS Lambda 函数,它在客户端和服务器角色中为我的 Firebase 应用程序做一些工作。

在 Lambda 上,我需要能够反转 firebase.initializeApp(config)firebase.initializeApp(config, 'server')。我试过 firebase.app('server').delete() 但这似乎不起作用。

在此先感谢您的帮助。

澄清一下,我不能只使用现有连接,因为配置可能会更改。

initializeApp 的调用采用可选的应用程序名称。如果未指定应用程序名称,则使用名称 [DEFAULT]

要取消初始化应用程序,您需要在应用程序实例上调用 delete。应用程序实例由 initializeApp 调用返回,或者可以使用 app 函数获取。

也就是说,您可以像这样初始化和取消初始化应用程序:

app = firebase.initializeApp(configuration);
app.delete();

或者像这样:

firebase.initializeApp(configuration);
firebase.app('[DEFAULT]').delete();

请注意,delete 函数 returns 一个在应用程序删除完成时解析的承诺。

或者,您也可以在处理函数之外初始化 Firebase 实例并将其传递下去。这可以防止它被多次调用。

Lambda 喜欢启动一个函数的一个实例,但不断调用它的函数处理程序,这意味着处理程序之外的代码只执行一次。

这可以应用于大多数只允许你运行一个实例的东西。

initializeApp returns 已初始化的应用程序。 你可以这样做:

const app = firebase.initializeApp(config);
//...
await app.delete();