Chr*_*SEA 50 firebase google-cloud-functions
我正在使用http云函数来侦听请求,然后返回一条简单的消息.
我正在使用以下方式在本地开发云功能:
firebase serve --only functions
Run Code Online (Sandbox Code Playgroud)
我使用设置了一些自定义环境变量
firebase functions:config:set
Run Code Online (Sandbox Code Playgroud)
在部署项目时,使用以下代码访问自定义配置变量可以正常工作
functions.config()
Run Code Online (Sandbox Code Playgroud)
但在本地开发时它不起作用.当命中触发该函数时:http:// localhost:5002/my-project-name/us-central1/functionName我无法访问自定义配置变量.当在本地使用functions.config()时,我可以看到默认配置,而不是我的自定义配置变量
在本地工作时是否有替代解决方案或环境变量的最佳实践?
lau*_*ong 86
截至目前,您必须通过运行此命令在函数目录中手动创建.runtimeconfig.json
文件.然后运行serve命令.
firebase functions:config:get > .runtimeconfig.json
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Windows Powershell,请将以上内容替换为:
firebase functions:config:get | ac .runtimeconfig.json
Run Code Online (Sandbox Code Playgroud)
您可以访问https://firebase.google.com/docs/functions/local-emulator了解详情
对于那些想要使用环境变量(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
Run Code Online (Sandbox Code Playgroud)
阅读配置并首先在函数代码下更新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];
}
Run Code Online (Sandbox Code Playgroud)
您可以保留一个名为 .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"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13979 次 |
最近记录: |