Firebase函数v1配置无法检索配置

时间:2018-04-17 16:11:30

标签: firebase google-cloud-functions

我正在按照其网站上列出的说明将我的firebase功能版本从测试版迁移到最近发布的版本:https://firebase.google.com/docs/functions/beta-v1-diff

我失败的具体部分被描述为:

  

functions.config().firebase已被删除。如果您想要访问Firebase项目中的配置值,请改用process.env.FIREBASE_CONFIG:

let firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);
/* {  databaseURL: 'https://databaseName.firebaseio.com',
       storageBucket: 'projectId.appspot.com',
       projectId: 'projectId' }
*/

所以我已经更新了我的版本以及我的代码,现在收到以下内容:

TypeError: Cannot read property 'key' of undefined
at Object.<anonymous> (functions\index.js:25:72)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at \npm\node_modules\firebase-tools\lib\triggerParser.js:21:11
at Object.<anonymous> (\npm\node_modules\firebase-tools\lib\triggerParser.js:61:3)

它所引用的属性“key”是我的配置对象上的一个属性,我试图通过这样做来访问:

let firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);

// let firebaseConfig = functions.config().firebase;
const SENDGRID_API_KEY = encodeURIComponent(firebaseConfig.sendgrid.key);

当我跑步时

firebase functions:config:get

它显示我的配置为现有:

{
  "gmail": {
    "password": "pwdValue",
    "email": "emailvalue"
  },
  "sendgrid": {
    "key": "keyvalue"
  }
}

我还仔细检查了.runtimeconfig.json文件,它与该命令返回的内容完全相同。

2 个答案:

答案 0 :(得分:4)

这听起来像是你误解了v1中发生的变化。更改是firebase.config().firebase不再使用,有利于Firebase SDK通过process.env.FIREBASE_CONFIG自动获取项目默认凭据。

这并不意味着firebase.config()已经消失。您仍然可以像使用v1之前那样使用firebase functions:config:get 完全设置的配置值。

答案 1 :(得分:1)

您可以在此处阅读有关如何使用环境变量的信息:https://firebase.google.com/docs/functions/config-env

调用自定义配置变量时,您需要省略firebase属性,如下所示:

functions.config().sendgrid.key