首页 > 解决方案 > 如何根据 firebase cli 别名分离部署构建

问题描述

在使用开发与公共时,我正在尝试分离部署构建。

.firebaserc的设置如下:

{
  "projects": {
    "dev": "PROJECTNAME-development",
    "public": "PROJECTNAME-public"
  }
}

在我的一个函数中,我必须引用存储桶:

const bucket = storage.bucket('PROJECTNAME-public.appspot.com')

目前,我必须在切换之前更改名称

我希望这样当我部署到开发时,我可以部署到我的开发项目......像这样:

let bucket
if (currentAlias === public) {
    bucket = storage.bucket('PROJECTNAME-public.appspot.com');
} else {
    bucket = storage.bucket('PROJECTNAME-development.appspot.com');
}

我似乎在文档中找不到任何可以让我做这样的事情的东西。

标签: javascriptfirebasegoogle-cloud-functionsfirebase-cli

解决方案


听起来您正在尝试仅访问项目的默认存储桶。

如果您使用的是 Firebase Admin SDK,只需不带参数初始化它,它就会自动从环境中获取默认存储桶的名称。

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

如果您使用的是 Cloud Storage 节点 SDK,则可以手动将存储桶的名称拉出环境:

const config = JSON.parse(process.env.FIREBASE_CONFIG)
const bucketName = config.storageBucket
const bucket = new Storage().bucket(bucketName) // version 2.x of the SDK

如果您需要访问每个项目的其他值,则应使用CLI 在部署时配置的Firebase环境变量,并在运行时使用 SDK 读取它们。


推荐阅读