javascript - 获取:名为“数据库”的 Firebase 服务已注册错误,即使我没有在任何地方导入 firebase/database
问题描述
环境
- 操作系统版本:Mac OS 10.15.1
- Firebase SDK 版本:8.8.0
- Firebase 产品:数据库(身份验证、数据库、存储等)
- Node.js 版本:8.15.1
- NPM 版本:6.9.0
- “火力基地”:“7.5.0”,
- “firebase 管理员”:“8.8.0”,
- “firebase 功能”:“3.3.0”
问题
当我打电话时firebase deploy --only functions
,它会停止functions: preparing functions directory for uploading...
并抛出:
database: Firebase: Firebase service named 'database' already registered (app/duplicate-service)
这是发现错误的地方:
at error (....../functions/node_modules/@firebase/app/dist/index.node.cjs.js:41:21)
我也开始得到:Error parsing triggers: The gRPC binary module was not installed. This may be fixed by running "npm rebuild"
当然我试过了npm rebuild
,但没有任何运气......
相关代码
我引用数据库的唯一方法是通过:
// Init firebase access to DB
const firebase_admin = require("firebase-admin");
// Get a database reference
const firebase_db = firebase_admin.database();
我在多个文件中执行此操作。
经过一番挖掘,我设法发现它是由这两个文件中的代码引起的:
// Init firebase access to DB
const firebase_admin = require("firebase-admin");
// Get a database reference to our blog
const firebase_db = firebase_admin.database();
const get_firebase_data = async (page_type, call_back) => {
const is_paypal_page = page_type === "paypal"
const is_admin_page = page_type === "admin"
const content = await firebase_db.ref("/content").once("value")
const footer_content = await firebase_db.ref("/footer_content").once("value")
const header_items = await firebase_db.ref("/header_items").once("value")
const translations = await firebase_db.ref("/translations").once("value")
const single_product_homepages = await firebase_db.ref("/single_product_homepages").once("value")
const couple_products_homepages = await firebase_db.ref("/couple_products_homepages").once("value")
const categories_of_product_variety = await firebase_db.ref("/categories_of_product_variety").once("value")
let products;
let shipping_options;
let admin;
if(is_paypal_page || is_admin_page) {
products = await firebase_db.ref("/products").once("value")
shipping_options = await firebase_db.ref("/shipping_options").once("value")
}
if(is_admin_page)
admin = await firebase_db.ref("/admin").once("value")
const final_object = {
...
}
call_back(null, final_object)
}
module.exports = (req,res) => {
get_firebase_data(req.params[0].replace("/", ""), (err,result) => {
if(err) res.send(err)
res.send(result)
})
}
和
const paypal = require('paypal-rest-sdk')
const { paypal_config } = require("../config")
const axios_instance = require("./inventorysource/axios_inventorysource_instance")
const create_order = require("./inventorysource/create_order")
paypal.configure(paypal_config)
const paymentPaypal = (paymentID, execute_payment_json, call_back) => {
paypal.payment.execute(paymentID, execute_payment_json, (error, paymentLog)=> {
if (error)
return call_back(error)
else {
call_back(null, paymentLog)
}
})
}
module.exports = (req, res) => {
const body = req.body
const execute_payment_json = { "payer_id": body.data.payerID }
const paymentID = body.data.paymentID
paymentPaypal(paymentID, execute_payment_json, (err, paypal_data) => {
if(err)
res.send(err)
else
create_order(
axios_instance(body.data.is_production),
body.data.is_production,
body.data.amount,
body.data.user_and_product_data,
res, paypal_data
)
})
}
但是,我在代码中的任何地方都没有导入或需要“firebase/database”。
我试过的
正如对类似问题的回答所暗示的那样,我已删除node_modules
并package-lock.json
尝试多次重新安装npm install
。我也尝试过使用不同版本的 odNode
并使用npm rebuild
.
此外,我尝试安装上述firebase
软件包的最新版本,然后重新删除并安装 npm。还是没有运气...
我还尝试注释掉我处理的部分代码,firebase
但错误仍然存在。
解决方案
推荐阅读
- .net-core - 为什么配置参数设置为调试时构建优化的 dotnet 核心程序集
- angular - 如何动态导入组件并使用 ivy 渲染它们
- ms-word - 如何使用office js设置表头背景颜色
- java - 莫名其妙的数字格式异常事件
- maven - 从 Azure Devops 运行 Selenium(TestNG) 测试
- go - 在 Go 中执行模板后,是否可以使用新的 url 重定向页面?
- javascript - 使用正则表达式 Javascript 匹配 html 标签
- php - 联系表单提交后如何重新渲染应用程序组件?
- asp.net - ASP.NET Core 如何像在 Spring 中一样读取配置属性?
- outlook - 是否可以直接从日历中检测到用户何时更改约会日期?