我正在使用http云功能来侦听请求,然后返回一条简单的消息。
我正在使用以下方式在本地开发云功能:
firebase serve --only functions
我使用
设置了一些自定义环境变量firebase functions:config:set
使用以下代码访问自定义配置变量在部署项目时工作正常
functions.config()
但在本地开发时不起作用。通过点击触发该功能:http://localhost:5002/my-project-name/us-central1/functionName我无法访问自定义配置变量。在本地使用functions.config()时,我可以看到默认配置,而不是我的自定义配置变量
在本地工作时是否有替代解决方案或环境变量的最佳实践?
答案 0 :(得分:59)
截至目前,您必须通过运行此命令在您的函数目录中手动创建.runtimeconfig.json
文件。然后运行serve命令。
firebase functions:config:get > .runtimeconfig.json
如果您使用的是Windows Powershell,请将以上内容替换为:
firebase functions:config:get | ac .runtimeconfig.json
您可以在https://firebase.google.com/docs/functions/local-emulator
中了解详情答案 1 :(得分:4)
您可以保留一个名为.env.json的文件,并在触发部署命令时将其加载
{
"name": "project",
"version": "0.0.0",
"scripts": {
"deploy": "npm run env && firebase deploy --only functions",
"env": "test -f env.json && firebase functions:config:unset env && firebase functions:config:set env=\"$(cat env.json)\" || echo \"Please add the file env.json before deploy.\""
},
"dependencies": {
"firebase-functions": "^3.1.0"
},
"devDependencies": {
"firebase-functions-test": "^0.1.6"
}
}
答案 2 :(得分:2)
对于那些想要使用环境变量(process.env)的人,我遵循此替代方法。
在部署前设置配置值
firebase functions:config:set envs.db_host=$DB_HOST_PROD envs.db_user=$DB_USER_PROD envs.db_password=$DB_PASSWORD_PROD envs.db_name=$DB_NAME_PROD envs.db_use_ssl=false
在您的函数代码下,首先阅读配置并更新env变量。
const functions = require('firebase-functions');
const config = functions.config();
// Porting envs from firebase config
for (const key in config.envs){
process.env[key.toUpperCase()] = config.envs[key];
}
答案 3 :(得分:1)
我不确定最受好评的答案是否有效,但是对于mac上的firebase功能(要在本地提供),我会执行以下操作
npm run admin-keys && export dev=true && firebase emulators:start
管理键在哪里
"admin-keys": "export GOOGLE_APPLICATION_CREDENTIALS='./.keys/admin.keys.json'"
这将从.runtimeconfig.json
加载配置
对于生产环境,您必须通过执行以下操作来手动设置
firebase functions:config:set facebookCred.secret="something"
答案 4 :(得分:1)
我已将问题缩小到Windows Powershell。
在Powershell中运行firebase functions:config:get> .runtimeconfig.json会生成一个损坏的json,我不知道为什么,在解析时会在JSON位置0产生意外的令牌。
我已经设法通过在Windows命令提示符下运行.runtimeconfig.json生成命令来对其进行排序。