如何从Cloud Function获取Firebase项目名称或ID

问题描述 投票:0回答:11

我正在使用 Cloud Functions,并希望从我的 Javascript 服务器文件之一中获取项目名称。我知道该值存储在 .firebaserc 中,但我认为该文件在服务器上不可用,对吧?我想做这样的事情:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.getProjectName();  // or getProjectID()

functions.getProjectName(); 
javascript node.js firebase google-cloud-functions
11个回答
63
投票

谢谢@弗兰克。答案是:

process.env.GCLOUD_PROJECT

我不确定变量
process
来自哪里,但这确实可以获取项目名称。


28
投票

Firebase 管理 SDK 可以为您访问该信息。

const admin = require('firebase-admin');
const projectId = admin.instanceId().app.options.projectId

6
投票

这对我有用。 (节点 10)

const FIREBASE_CONFIG = process.env.FIREBASE_CONFIG && JSON.parse(process.env.FIREBASE_CONFIG);
const projectId = FIREBASE_CONFIG.projectId;

4
投票

试试这个:

const projectId = admin.instanceId().app['options_'].credential.projectId

4
投票

来自 Firebase 文档

process.env.FIREBASE_CONFIG
:提供以下 Firebase 项目配置信息:

{
  databaseURL: 'https://databaseName.firebaseio.com',
  storageBucket: 'projectId.appspot.com',
  projectId: 'projectId'
}

请注意,由于它是一个 JSON 字符串,因此您需要像这样解析它:

const projectId = JSON.parse(process.env.FIREBASE_CONFIG).projectId;

或者,您可以使用 Cloud Functions 中 firebaseConfig()

 包中的 
firebase-functions
 方法
,如下所示:

import { firebaseConfig } from "firebase-functions";
const projectId = firebaseConfig().projectId;

此外,Google Cloud Platform(Firebase 在其上运行)将自动填充此处记录的环境变量,具体取决于您使用的运行时。


3
投票

Firebase Functions 提供了一个可以立即检索项目 ID 的库:

const { projectID } = require("firebase-functions/params");
console.log("My project ID: ", projectID.value());

参考文档


1
投票

对于在较新版本的 Node 上运行的云函数:

import firestore from "@google-cloud/firestore";

const client = new firestore.v1.FirestoreAdminClient();
const projectId = await client.getProjectId();

1
投票

使用admin SDK获取项目ID的方法是

admin.appCheck().app.options.credential.projectId

这也适用于设置了环境变量

GOOGLE_APPLICATION_CREDENTIALS
的无头设置。


0
投票

目前我正在使用

app.INTERNAL.credential_.projectId
。 这显然不能保存,但到目前为止还没有一致的方法来获得它(AFAIK)


0
投票

这是上面给出的答案的组合:

function getProjectID() {
  return firebaseInstance.options.projectId ||
    (firebaseInstance.options.credential && firebaseInstance.options.credential.projectId) || '';
}

或者在 TypeScript 中:

function getProjectID(): string {
  return firebaseInstance.options.projectId ||
    (firebaseInstance.options.credential && (firebaseInstance.options.credential as unknown as { projectId: string }).projectId) || '';
}

-4
投票

您可以使用

functions.config().firebase.projectId

PS 初始化应用程序最简单的方法是

admin.initializeApp(functions.config().firebase);

© www.soinside.com 2019 - 2024. All rights reserved.