簡體   English   中英

如何將 Firebase 參數化配置與 Typescript 一起用於 Cloud Functions?

[英]How can I use Firebase Parameterized configuration with Typescript for Cloud Functions?

我正在嘗試將 Firebase 參數化配置與 Typescript 一起用於 Cloud Functions。 具體來說,我試圖在部署時使用它們來指定要使用的服務帳戶,因為我在單獨的 firebase 項目中有三個環境(開發、暫存、生產),具有單獨的 firestore 數據庫。

我按照這里的說明https://firebase.google.com/docs/functions/config-env

我在運行時訪問這些環境變量沒有問題,就像在指令中通過 calling.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) 類型的參數”

然后,當我嘗試像這樣在此處獲取值時:index.ts

import * as admin from "firebase-admin"
import { SERVICE_ACCOUNT } from "./config"

admin.initializeApp({
  credential: admin.credential.cert(SERVICE_ACCOUNT.value()),
})

使用此代碼,我現在沒有從 typescript 得到任何問題,因為該值是一個字符串,但是我在部署到 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() }"}

所以我遇到的問題是我不能只使用參數,因為 typescript 不會編譯,然后當我從參數中獲取值以使 typescript 快樂時,我無法部署。

有人可以幫我從這里出去嗎? 提前致謝

我正在為 firebase 功能和管理使用以下包:

"firebase-admin": "^11.3.0",
"firebase-functions": "^4.1.0",

新年快樂。

defineString().value 是一個 getter function。所以你應該將它用作參數,而不是方法。

 import * as admin from "firebase-admin" import { SERVICE_ACCOUNT } from "./config" admin.initializeApp({ credential: admin.credential.cert(SERVICE_ACCOUNT.value), })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM