全局访问Node.JS / express中的Firebase

前端之家收集整理的这篇文章主要介绍了全局访问Node.JS / express中的Firebase前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的主要快递文件app.js中,我设置了Firebase:
var firebase = require("firebase");
firebase.initializeApp({
  serviceAccount: "../Wrapper-adfd67bc8c36.json",databaseURL: "https://wrapper.firebaseio.com"
});

但是当我尝试在路由文件中访问它时:

var express = require('express');
var router = express.Router();

router.get('/:id',function(req,res,next) {
    functionThatUsesFirebase(req.params.id);

    res.send(req.params.id);
});

我收到错误

firebase is not defined.

那么我尝试将Firebase添加到路由文件本身:

var express = require('express');
var router = express.Router();
var firebase = require("firebase");
firebase.initializeApp({
  serviceAccount: "../Wrapper-adfd67bc8c36.json",databaseURL: "https://wrapper.firebaseio.com"
});

router.get('/:id',next) {
    functionThatUsesFirebase(req.params.id);

    res.send(req.params.id);
});

我收到控制台错误

Firebase App named '[DEFAULT]' already exists.

如何让所有路由文件都可以访问Firebase?谢谢!

解决方法

在Node,all modules are “Singletons”中,Node.js文档中也称为 Module Caching.如果您在app.js中调用initializeApp()一次,然后在路由器中再次需要firebase,则路由器的firebase实际上将具有与app.js中的firebase相同的全局设置.这就是为什么您收到错误的原因Firebase应用程序名称'[DEFAULT]’已经存在.

在app.js中调用initializeApp()之后,不需要在代码中的任何其他位置对initializeApp()进行后续调用.无论何时何地您需要与firebase进行交互只需要(‘firebase’)并使用它.

猜你在找的Node.js相关文章