首页 > 解决方案 > 获取:名为“数据库”的 Firebase 服务已注册错误,即使我没有在任何地方导入 firebase/database

问题描述

环境

问题

当我打电话时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_modulespackage-lock.json尝试多次重新安装npm install。我也尝试过使用不同版本的 odNode并使用npm rebuild.

此外,我尝试安装上述firebase软件包的最新版本,然后重新删除并安装 npm。还是没有运气...

我还尝试注释掉我处理的部分代码,firebase但错误仍然存​​在。

标签: javascriptnode.jsfirebasefirebase-realtime-database

解决方案


推荐阅读