我正在尝试关注https://github.com/urish/firebase-server#usage-example但似乎错过了MCVE。
这是我尝试创建的foo.js
:
Firebase = require('firebase');
client = new Firebase('http://localhost.firebaseio.test:5000');
client.on('value', function(thing) {
console.log('Stuff: ', thing.val());
});
然而,当我用node foo.js
运行时,我得到了
TypeError: Firebase is not a constructor
at Object.<anonymous> (/home/wayne/programming/foo.js:3:10)
显然这不是我想要的。所以我想,也许它指的是Firebase的过时版本。因此,我们只需尝试将其替换为firebase-admin
:
firebase = require('firebase-admin');
firebase.initializeApp({
credential: firebase.credential.applicationDefault(),
databaseURL: 'http://localhost.firebaseio.test:5000',
});
db = firebase.database().ref()
db.once('value')
.then(function(thing) {
console.log('Stuff: ', thing.val());
});
(我不知道它是否应该看起来如此:https://github.com/firebase/quickstart-nodejs/blob/master/database/index.js是我能找到的最简单的例子)
但这只是在提示时挂起,就像它计划做某事但从未做过。
我已经使用node_modules/.bin/firebase-server -p 5000 -e
启动了我的firebase服务器,我可以看到它与我们的代码库中的一些更复杂的代码相关联,但它的方式比MCVE更多,这正是我想要做的。我希望能够连接到我的firebase服务器并看到我可以读取和写入内容。
如何使用firebase-server
进行测试?是否存在我缺少的MCVE?
答案 0 :(得分:1)
可能缺少firebase-server
用法示例的示例,127.0.0.1 localhost.firebaseio.test
需要添加到/etc/hosts
,否则可能无法解决。从firebase-server -h
可以看出,必须通过配置&amp;数据JSON文件作为选项。建议使用&#34;实时数据库&#34; &安培; &#34;云功能&#34;,而不是尝试运行自定义WS服务器 - 因为要进行测试,必须提供预期的JSON文件 - 并且前端JavaScript库很可能无法进行身份验证,因此需要凭证。
文档说,firebase-server
是 Firebase Web套接字协议服务器(听起来是独立的,可能会实现RFC 6455);它与firebase serve
不同(我不清楚你指的是哪一个,因此这些例子混淆了 - 这可能是造成混淆的根源)......对于Google Firebase
一个人可以使用npm install -g firebase-tools
获取测试服务器和云功能模拟器;当使用--debug
选项运行本地测试服务器时,它应该显示可能卡住的位置:
firebase serve --debug
从项目目录中执行。
例如。它可能缺乏对全局安装的模块的访问权限。目录:
sudo mkdir /usr/lib/node_modules/firebase-tools/node_modules/@google-cloud/functions-emulator/logs
sudo chown -R ....
在项目级别安装@google-cloud/functions-emulator
也可以规避这一点。
并且您还需要一个firebase.json
来控制部署。
例如,如果身份验证成功(public/index.html
生成代码),则需要加载firebasejs/5.0.1/firebase.js
,然后加载firebase setup:web
以检入前端JavaScript。 用户是否经过身份验证&amp;在某个参考路径上拥有read/write
的权限。
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/node_modules/**"
]
}
}
而firebase functions:shell
将运行该函数模拟器,作为Node shell。
firebase/index.js
用于nodeJS,例如。 firebase/package.json
可以参考:
{
"name": "...",
"description": "...",
"private": true,
"dependencies": {
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1",
"@firebase/database": "^0.1.10",
"@google-cloud/logging": "^1.1.4"
}
}
firebase-admin
可能需要服务帐户:
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://databaseName.firebaseio.com"
});
guides也解释了大部分内容......当然还有firebase --help
。