Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase函数配置赢得';不部署_Javascript_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript 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似乎没有拾

我正在尝试部署一个函数,该函数使用基于我在部署之前设置的环境变量的firebase配置变量。这在登台(一个单独的项目,除了几个环境变量外,看起来几乎与生产相同),但在生产中失败,出现错误
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
-参见问题),但显然没有设置适当的配置值