node.js - 具有实时数据库错误的firebase函数
问题描述
我是 firebase 函数的新手,并试图将 firebase 函数与实时数据库(模拟器套件)一起使用。但是当我尝试使用 firebase 函数在 firebase 中设置值时,它会出错并且不会在数据库中设置值。
错误:
17:33:14
I
function[us-central1-textToLength]
[2021-11-05T12:03:14.194Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway.
17:34:18
I
function[us-central1-textToLength]
[2021-11-05T12:04:18.762Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway.
17:35:06
I
function[us-central1-textToLength]
[2021-11-05T12:05:06.473Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway.
17:35:54
I
function[us-central1-textToLength]
[2021-11-05T12:05:54.409Z] @firebase/database: FIREBASE WARNING: wss:// URL used, but browser isn't known to support websockets. Trying anyway.
firebase 功能代码:
const functions = require('firebase-functions');
var admin = require("firebase-admin");
admin.initializeApp();
var database = admin.database();
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
exports.textToLength = functions.https.onRequest((request, response) => {
var tex = request.query.text;
var textLength = tex.length;
console.log(textLength);
database.ref().child('test').set("op");
response.send(String(textLength));
});
依赖项:
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "14"
},
"main": "index.js",
"dependencies": {
"firebase-admin": "^9.8.0",
"firebase-functions": "^3.14.1",
"@firebase/database-compat": "0.1.2"
},
"devDependencies": {
"firebase-functions-test": "^0.2.0"
},
"private": true
}
npm 安装包
+-- @firebase/app-compat@0.1.7
| +-- @firebase/app@0.7.6
| | +-- @firebase/component@0.5.8
| | | +-- @firebase/util@1.4.1 deduped
| | | `-- tslib@2.3.1 deduped
| | +-- @firebase/logger@0.3.1
| | | `-- tslib@2.3.1 deduped
| | +-- @firebase/util@1.4.1
| | | `-- tslib@2.3.1 deduped
| | `-- tslib@2.3.1 deduped
| +-- @firebase/component@0.5.8
| | +-- @firebase/util@1.4.1 deduped
| | `-- tslib@2.3.1 deduped
| +-- @firebase/logger@0.3.1
| | `-- tslib@2.3.1 deduped
| +-- @firebase/util@1.4.1
| | `-- tslib@2.3.1 deduped
| `-- tslib@2.3.1
+-- @firebase/database-compat@0.1.2
| +-- @firebase/component@0.5.7
| | +-- @firebase/util@1.4.0 deduped
| | `-- tslib@2.3.1 deduped
| +-- @firebase/database@0.12.2
| | +-- @firebase/auth-interop-types@0.1.6
| | +-- @firebase/component@0.5.7 deduped
| | +-- @firebase/logger@0.3.0 deduped
| | +-- @firebase/util@1.4.0 deduped
| | +-- faye-websocket@0.11.4
| | | `-- websocket-driver@0.7.4
| | | +-- http-parser-js@0.5.3
| | | +-- safe-buffer@5.2.1 deduped
| | | `-- websocket-extensions@0.1.4
| | `-- tslib@2.3.1 deduped
| +-- @firebase/database-types@0.9.1
| | +-- @firebase/app-types@0.7.0
| | `-- @firebase/util@1.4.0 deduped
| +-- @firebase/logger@0.3.0
| | `-- tslib@2.3.1 deduped
| +-- @firebase/util@1.4.0
| | `-- tslib@2.3.1 deduped
| `-- tslib@2.3.1 deduped
`-- firebase-admin@10.0.0
+-- @firebase/database-compat@0.1.2 deduped
+-- @firebase/database-types@0.7.3
| `-- @firebase/app-types@0.6.3
+-- @google-cloud/firestore@4.15.1
| +-- fast-deep-equal@3.1.3
| +-- functional-red-black-tree@1.0.1
| +-- google-gax@2.28.0
解决方案
同时,如果您使用的是最新的 Admin SDK 版本,您可以在 package.json 文件中将 @firebase/database-compat 固定到版本 0.1.2 作为临时修复。
“依赖”:{“@firebase/database-compat”:“0.1.2”}
这对我有用。
参考:https ://github.com/firebase/firebase-admin-node/issues/1487
推荐阅读
- go - Golang 无法导入分叉的存储库
- c++ - 我在 C++ 中将浮点变量转换为字符串时遇到问题
- java - 解析带有小数和分组分隔符的货币字符串,或者如果 Pattern 不匹配则抛出
- java - 无法反转单链表实现的队列中的前 k 个元素
- amazon-web-services - 安装提供程序“aws”时出错:openpgp:未知实体的签名
- java - 通过将日期时间连接到 Multipart 文件的名称来替换它不能正常工作
- python-3.x - python:与 mpi4py 联合进行多处理
- javascript - 如何仅在 v-html 元素中呈现锚标记并避免其他标记并将它们显示为字符串
- javascript - 如何在 AWS Analytics 中捕获用户的位置
- docker - 如何获取当前主机上 Docker swarm 全局服务的地址?