Javascript Firebase函数配置赢得';不部署
我正在尝试部署一个函数,该函数使用基于我在部署之前设置的环境变量的firebase配置变量。这在登台(一个单独的项目,除了几个环境变量外,看起来几乎与生产相同),但在生产中失败,出现错误Javascript Firebase函数配置赢得';不部署,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我正在尝试部署一个函数,该函数使用基于我在部署之前设置的环境变量的firebase配置变量。这在登台(一个单独的项目,除了几个环境变量外,看起来几乎与生产相同),但在生产中失败,出现错误TypeError:无法读取指向functions.config().app.env的未定义的属性'env' 如果我在https://console.cloud.google.com/functions/details/us-central1/?project=文件.runtimeconfig.json似乎没有拾
TypeError:无法读取指向functions.config().app.env
的未定义的属性'env'
如果我在https://console.cloud.google.com/functions/details/us-central1/?project=
文件.runtimeconfig.json
似乎没有拾取我在部署到生产环境之前设置的env变量,而它在登台时却可以完美地执行此操作
如果我将app.env设置为“staging”,它对我的staging环境非常有效,并且不会显示任何错误。我尝试将cd
-ing放入functions文件夹来设置env变量,然后在部署之前退出,但没有改变任何事情。我甚至尝试将其写入functions文件夹中的.runtimeconfig.json
(虽然这应该只用于本地测试),但也没有效果
编辑:经过更多的测试,我在联机浏览函数时可以看到的.runtimeconfig
是从我通过CLI在本地设置的函数配置生成的,并在部署时上载。无论我何时更新它,它似乎都可以复制到staging上,但在生产中不会这样做。我就是不明白为什么
我的职能:
const functions = require('firebase-functions')
// Stripe needs to be set with its key when the library is being required
const stripe = require("stripe")(functions.config().app.env === 'staging' ? functions.config().stripe.key.staging : functions.config().stripe.key.production)
// ^^^ this is what the error is pointing to
module.exports = functions.https.onCall(async (data, context) => {
// ... doin' some stripe magic
})
我在shell命令行环境中使用npm:
firebase函数:config:set-app.env=“production”&&firebase-deploy-P production——仅函数
firebase使用的输出
:
%firebase使用
活动项目:默认值()
以下项目的项目别名:
*默认值()
生产()
运行firebase use--add以定义新的项目别名。
firebase函数的输出:config:get
(以及其他变量):
{
“应用程序”:{
“环境”:“生产”
}
}
我解决了这个问题,首先切换到生产项目,设置变量,然后从那里部署
firebase使用生产
firebase函数:config:set someservice.key=“keyvalue”。。。
firebase部署--仅限函数
尽管我以前在部署命令中使用了-p
标志(firebase-p production
-参见问题),但显然没有设置适当的配置值