运行 Cloud Functions 在本地给出错误 "functions.config() is not available"

Running Cloud Functions locally gives error "functions.config() is not available"

Cloud Functions for Firebase 最近刚刚发布,我正在按照全新安装的说明进行操作。 Here is the "Get Started" page.

我已经安装了 "npm install -g firebase-tools",我的所有文件都在我的项目中。我正在使用 WebStorm 2016.3 和 Node.JS v6.10.0.

我还安装并设置了 firebase 登录和 firebase 初始化功能。 我的设置。

我的package.json

 {
   "name": "functions",
   "description": "Cloud Functions for Firebase",
    "dependencies": {
     "firebase-admin": "^4.1.2",
     "firebase-functions": "^0.5"
   },
    "private": true
 }

前两行代码有效。

  const functions = require('firebase-functions');
  const admin = require('firebase-admin');

但是当我尝试 运行 这一行时...

  admin.initializeApp(functions.config().firebase);

我收到这个错误。

 Error: functions.config() is not available. Please use the latest version of the Firebase CLI to deploy this function.
   at init (/Users/.../functions/node_modules/firebase-functions/lib/config.js:46:19)
   at Object.config (/Users/.../functions/node_modules/firebase-functions/lib/config.js:29:9)
   at Object.<anonymous> (/Users/.../functions/index.js:11:31)
   at Module._compile (module.js:570:32)
   at Object.Module._extensions..js (module.js:579:10)
   at Module.load (module.js:487:32)
   at tryModuleLoad (module.js:446:12)
   at Function.Module._load (module.js:438:3)
   at Module.runMain (module.js:604:10)
   at run (bootstrap_node.js:394:7)

我在这里错过了什么?

看起来您可能仍然使用旧版本的 firebase CLI,即使您尝试安装最新的 firebase-tools.

您可以通过运行宁firebase --version查看。至少应该说 3.5.0。如果没有,您将需要再次 运行 npm install -g firebase-tools,这有望解决问题。

如果您的 firebase --version 继续显示错误的版本,您需要检查是否不小心安装了 firebase-tools 的多个版本。

如果您像我一样在尝试在本地 运行 您的函数时遇到此错误,那是因为 functions.config() 仅在 Cloud Functions 运行time 内可用。

如果您在部署之前尝试测试您的功能,请参阅有关如何执行此操作的文档 link:run functions locally。具体来说,这部分感兴趣:

If you're using custom functions configuration variables, run the following command in the functions directory of your project before running firebase serve.

firebase functions:config:get > .runtimeconfig.json

However, if you're using Windows PowerShell, replace the above command with:

firebase functions:config:get | ac .runtimeconfig.json

我 运行 firebase deploy 来自错误的目录。希望这会节省一些时间。

在我的例子中 .runtimeconfig.json / .env / .env.local 没有工作 - 在任何文件夹中。

原来 windows 上与 PWD 相关的 firebase 工具存在一些问题。

在执行“firebase emulators:start”之前,运行这个:

$env:CLOUD_RUNTIME_CONFIG="$(pwd)/functions/.runtimeconfig.json"