TypeScript中Firebase Functions defineSecret报SecretParam无value属性求助
Firebase Functions 正确读取 SecretParam 的方法
问题核心原因
你遇到的 TypeScript 错误是因为 SecretParam 实例并没有 value() 方法,正确的取值方式是访问它的 .value 属性。此外,还需要确保密钥参数在使用前已经完成解析,否则会出现取值为空的情况。
修正后的完整代码
import * as functions from "firebase-functions"; import {defineSecret, params} from 'firebase-functions/params'; const someToken = defineSecret("TOKEN_NAME"); import * as express from "express"; import {bootstrap, services} from "./bootstrap"; export const app = express(); app.use(express.json()); app.get("/", (req, res) => { res.sendStatus(200); }); app.post("/", async (req, res) => { if (!req.body) { res.send("缺少JSON请求体!"); return; } // 等待密钥参数解析完成,避免取值为空 await params.awaitAll([someToken]); // 使用 .value 属性获取密钥的实际值 await bootstrap(someToken.value); services.useGraphQL?.getEntity(req.body).then( (response) => { res.status(200).send(response); }, () => { console.error(`执行${req.body.command}时出错`); res.sendStatus(500); }); }); export default functions .runWith({secrets: ["TOKEN_NAME"]}) .https.onRequest(app);
关键注意事项
- 取值方式:始终使用
.value属性读取SecretParam的值,不要加括号调用。 - 参数解析:在使用密钥前,必须调用
params.awaitAll([参数实例])等待参数加载完成,否则.value会返回undefined。 - 密钥名称一致性:
runWith({secrets: [...]})中的密钥名称必须和defineSecret("名称")完全匹配,部署时 Firebase 会根据这个名称查找对应的密钥。
内容的提问来源于stack exchange,提问作者Luggl
相关产品推荐
相关产品推荐

