我试图通过在firebase中设置环境配置将api密钥存储为环境变量。
这是参考文献https://firebase.google.com/docs/functions/config-env。
我重新部署了节点8中的函数,并且在运行firebase functions:config:get
时可以看到输出的JSON api键。
"myservice":{
"key": "******",
"id": "******"
}
但是,当我运行我的应用程序(TypeScript)并尝试测试是否可以获取我的apikey时:
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
import "firebase-functions";
admin.initializeApp();
const key = functions.config().myservice.key;
console.log(key);
我知道了
Warning, FIREBASE_CONFIG and GCLOUD_PROJECT environment variables are missing. Initializing firebase-admin will fail
TypeError: Cannot read property 'key' of undefined
并且在控制台中看不到密钥
有人有同样的问题吗? 任何人都可以提出一些解决此问题的提示。谢谢。
答案 0 :(得分:0)
如果您正在运行 Firebase 模拟器,则需要将环境变量存储在本地,如 here 所述。
firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json
firebase functions:shell
使用 firebase functions:config:set
从 cli 设置环境变量后,您可能还需要根据 cli 命令的输出发布它们:
Please deploy your functions for the change to take effect by running firebase deploy --only functions
如果您将此作为单元测试运行,您可以使用 firebase-functions-test 库来设置环境变量:
const testEnv = functions(
{
projectId: "your-project-id",
},
"./<PATH-TO-SERVICE-ACCOUNT-KEY"
);
// Provide environment variables
testEnv.mockConfig({ someapi: { key: "abc123" } });