【发布时间】:2023-01-04 03:04:26
【问题描述】:
我正在尝试将 Firebase 参数化配置与 Typescript 一起用于 Cloud Functions。具体来说,我试图在部署时使用它们来指定要使用的服务帐户,因为我在单独的 firebase 项目中有三个环境(dev、staging、prod),具有单独的 firestore 数据库。
我按照这里的说明https://firebase.google.com/docs/functions/config-env
我在运行时通过调用 .value() 访问这些环境变量没有问题,就像在说明中一样
我这样定义我的服务帐户环境变量:
配置.ts
import { defineString } from "firebase-functions/params"
export const SERVICE_ACCOUNT = defineString("SERVICE_ACCOUNT")
.env。
SERVICE_ACCOUNT = './service-account-dev.json'
然后当我想在部署时使用这个环境变量时,我得到了一些错误
索引.ts
import * as admin from "firebase-admin"
import { SERVICE_ACCOUNT } from "./config"
admin.initializeApp({
credential: admin.credential.cert(SERVICE_ACCOUNT),
})
Typescript 错误:“‘StringParam’类型的参数不可分配给‘string | ServiceAccount’.ts(2345) 类型的参数”
然后,当我尝试像这样在此处获取值时: 索引.ts
import * as admin from "firebase-admin"
import { SERVICE_ACCOUNT } from "./config"
admin.initializeApp({
credential: admin.credential.cert(SERVICE_ACCOUNT.value()),
})
有了这段代码,我现在没有从打字稿中得到任何问题,因为该值是一个字符串,但是在部署到 firebase 时我得到了一个错误(这是我在顶部链接的说明中预期和提到的)。
错误如下:
{"severity":"WARNING","message":"params.SERVICE_ACCOUNT.value() invoked during function deployment, instead of during runtime."}
{"severity":"WARNING","message":"This is usually a mistake. In configs, use Params directly without calling .value()."}
{"severity":"WARNING","message":"example: { memory: memoryParam } not { memory: memoryParam.value() }"}
所以我遇到的问题是我不能只使用参数,因为打字稿不会编译,然后当我从参数中获取值以使打字稿快乐时,我无法部署。
有人可以帮我从这里出去吗?提前致谢
我将以下软件包用于 firebase 功能和管理:
"firebase-admin": "^11.3.0",
"firebase-functions": "^4.1.0",
【问题讨论】:
标签: typescript firebase google-cloud-functions environment-variables