Доступ к Firebase в узле.JS / express глобально

в моем главном экспресс-файле,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', function(req, res, next) {
    functionThatUsesFirebase(req.params.id);

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

Я получаю ошибку в консоли:

Firebase App named '[DEFAULT]' already exists.

как сделать Firebase доступной для всех моих файлов маршрутизации? Спасибо!

1 ответов


В Узле все модули "одиночек", также известный как Кэширование Модуля в узле.Яш документы. Если вы позвоните initializeApp() раз в app.js а затем требовать firebase снова в вашем маршрутизаторе, ваш маршрутизатор firebase фактически будут иметь те же глобальные настройки, что и firebase в своем app.js. Вот почему вы получаете свою ошибку Firebase App name '[DEFAULT]' already exists.

как только вы позвоните initializeApp() в своем app.js, никаких последующих вызовов не потребуется к initializeApp() нигде в коде. Всякий раз, когда / где вам нужно взаимодействовать с firebase просто require('firebase') и использовать его.