【问题标题】:Why do I keep seeing warning "Estimating config based on GCLOUD_PROJECT"为什么我一直看到警告“基于 GCLOUD_PROJECT 估计配置”
【发布时间】:2021-12-20 14:09:24
【问题描述】:

这个警告让我很困惑。我知道当您调用不带参数的 initializeApp 时它会出现,并且我知道该警告在这种情况下非常合适。

基于项目 ID 的配置对我的项目有效,因此为了避免警告,我在传递它之前明确地形成了这个配置:

// GCP_PROJECT seems to be required for cloud-functions where GCLOUD_PROJECT is missing
const projectId = process.env.GCP_PROJECT || process.env.GCLOUD_PROJECT;
assert(projectId, "Missing GCP_PROJECT or GCLOUD_PROJECT env variable");

const firebaseConfig = {
  authDomain: `${projectId}.firebaseapp.com`,
  databaseURL: `https://${projectId}.firebaseio.com`,
  projectId,
  storageBucket: `${projectId}.appspot.com`,
};

Firebase 继续给我同样的警告,我看不出有什么原因。

此代码在云函数的上下文中和之外都使用。如果 Google 的任何人在听,我认为在 de 文档中清楚地概述 GCP 中的各种组件在这些环境变量方面的区别是有用的:

GCP_PROJECTGCLOUD_PRJOJECTGOOGLE_CLOUD_PROJECT。不久前,我读到有人提到 GCLOUD_PRJOJECT 已被弃用,但它似乎仍在积极使用中。

我使用的是 firebase-admin 版本 10,但行为与 9 AFAIK 相同。

【问题讨论】:

标签: node.js firebase firebase-admin


【解决方案1】:

IIRC,由于缺少FIREBASE_CONFIG 环境变量,因此记录了该警告。 FIREBASE_CONFIG 是一个 JSON 格式的字符串,其中包含一个带有 projectIddatabaseUrlstorageBucket 的配置对象。

配置对象如下所示:

{
  "databaseURL": "https://an-example.firebaseio.com",
  "projectId": "an-example",
  "storageBucket": "an-example.appspot.com"
}

因为可以通过替换项目 ID 推断出上述对象,所以即使它已被弃用,它也会作为后备实现。在现代 Google Cloud Function 运行时中,GCLOUD_PROJECT 甚至不存在,因此警告是为了帮助您在部署代码之前提醒您注意问题。

【讨论】:

  • 谢谢,这解释了它,但我会说警告是一个错误。如果你像我一样构建一个配置并将其传递给initializeApp,它不应该检查 FIREBASE_CONFIG 环境变量,因为我假设这个变量总是会被传入的参数覆盖。
  • 现在我将通过将其添加到我的环境变量 FIREBASE_CONFIG=__mute_warning 来解决它
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 2022-01-05
  • 2019-06-01
  • 2023-01-09
  • 2013-07-12
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
相关资源
最近更新 更多