Firebase 的 Cloud Functions 最近刚刚发布,我正在按照全新安装的说明进行操作。 这是“开始”页面。
我已经安装了“npm install -g firebase-tools”,并且所有文件都在我的项目中。我正在使用 WebStorm 2016.3 和 Node.JS v6.10.0。
我还安装并设置了 firebase 登录和 firebase init 功能。 我的设置。
我的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)
我在这里缺少什么?
如果您像我一样,在尝试在本地运行函数时遇到此错误,那么这是因为
functions.config()
仅在 Cloud Functions 运行时中可用。
如果您尝试在部署之前测试函数,请参阅以下文档链接,了解如何执行此操作:在本地运行函数。具体来说,这部分很有趣:
如果您使用自定义函数配置变量,请在运行 firebaseserve 之前在项目的函数目录中运行以下命令。
firebase functions:config:get > .runtimeconfig.json
但是,如果您使用的是 Windows PowerShell,请将上述命令替换为:
firebase functions:config:get | ac .runtimeconfig.json
firebase deploy
。希望这会节省一些人的时间。
firebase
CLI,即使您尝试安装最新的
firebase-tools
。您可以通过运行
firebase --version
来检查。至少应该说
3.5.0
。如果没有,您将需要再次运行
npm install -g firebase-tools
,这有望解决问题。如果您的
firebase --version
继续显示错误版本,您需要检查是否意外安装了多个版本的
firebase-tools
。
事实证明,Windows 上与 PWD 相关的 firebase-tools 存在一些问题。
在执行“firebase emulators:start”之前,运行以下命令:
$env:CLOUD_RUNTIME_CONFIG="$(pwd)/functions/.runtimeconfig.json"
admin.initializeApp();
而不是
admin.initializeApp(functions.config().firebase);
它解决了我的错误。
const admin = require('firebase-admin');
admin.initializeApp();
let db = admin.firestore();
谢谢,