使用 node-config 部署 Firebase 函数
Deploy Firebase functions with node-config
我创建了一个使用此配置库的 firebase 函数 https://www.npmjs.com/package/config。当我 运行 它在本地一切正常。
当我尝试部署时,firebase deploy --only functions
config 目录和 functions 文件夹中的相关文件似乎没有上传。我的函数在尝试读取配置值时失败。
如何让 firebase 将我的配置目录与函数一起部署?
更新
文件夹结构为
- 函数
- index.js
- package.json
- 测试
- index.test.json
- node_modules
- ...
- 配置
- default.json
firebase 输出低于
root@fc19e6bca144:/appfiles# firebase deploy --only functions
=== Deploying to 'familybank'...
i deploying functions
i functions: ensuring necessary APIs are enabled...
✔ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
Error: Error occurred while parsing your function triggers.
Error: Configuration property "dialogflow.intents.welcome_user" is not defined
at Config.get (/appfiles/functions/node_modules/config/lib/config.js:203:11)
at Object.<anonymous> (/appfiles/functions/index.js:39:19)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
at Function.Module._load (internal/modules/cjs/loader.js:536:3)
at Module.require (internal/modules/cjs/loader.js:643:17)
at require (internal/modules/cjs/helpers.js:22:18)
at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:15:15
at Object.<anonymous> (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:53:3)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
dialogflow.intents.welcome_user
在config/defaults.json
中提供,所以我认为它没有上传。
大部分细节都在这个问题中:https://github.com/firebase/firebase-tools/issues/1046(和相应的拉取请求)。
在这种情况下,node-config 正在寻找脚本最初所在目录 运行 之外的 config
目录,而不是相对于正在导入的脚本的目录。虽然 node-config 确实提供了一种使用环境变量覆盖它的方法,https://github.com/lorenwest/node-config/wiki/Environment-Variables,但 firebase CLI 删除了环境变量,所以它仍然找不到它。
修复,如拉取请求中所示,是捕获当前环境变量并将它们传递给 fork
ed 进程,以便它们可用于节点配置。
我创建了一个使用此配置库的 firebase 函数 https://www.npmjs.com/package/config。当我 运行 它在本地一切正常。
当我尝试部署时,firebase deploy --only functions
config 目录和 functions 文件夹中的相关文件似乎没有上传。我的函数在尝试读取配置值时失败。
如何让 firebase 将我的配置目录与函数一起部署?
更新
文件夹结构为
- 函数
- index.js
- package.json
- 测试
- index.test.json
- node_modules
- ...
- 配置
- default.json
firebase 输出低于
root@fc19e6bca144:/appfiles# firebase deploy --only functions
=== Deploying to 'familybank'...
i deploying functions
i functions: ensuring necessary APIs are enabled...
✔ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
Error: Error occurred while parsing your function triggers.
Error: Configuration property "dialogflow.intents.welcome_user" is not defined
at Config.get (/appfiles/functions/node_modules/config/lib/config.js:203:11)
at Object.<anonymous> (/appfiles/functions/index.js:39:19)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
at Function.Module._load (internal/modules/cjs/loader.js:536:3)
at Module.require (internal/modules/cjs/loader.js:643:17)
at require (internal/modules/cjs/helpers.js:22:18)
at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:15:15
at Object.<anonymous> (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:53:3)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
dialogflow.intents.welcome_user
在config/defaults.json
中提供,所以我认为它没有上传。
大部分细节都在这个问题中:https://github.com/firebase/firebase-tools/issues/1046(和相应的拉取请求)。
在这种情况下,node-config 正在寻找脚本最初所在目录 运行 之外的 config
目录,而不是相对于正在导入的脚本的目录。虽然 node-config 确实提供了一种使用环境变量覆盖它的方法,https://github.com/lorenwest/node-config/wiki/Environment-Variables,但 firebase CLI 删除了环境变量,所以它仍然找不到它。
修复,如拉取请求中所示,是捕获当前环境变量并将它们传递给 fork
ed 进程,以便它们可用于节点配置。