首页 > 解决方案 > 用于firebase初始化功能的节点js模块导出

问题描述

我试图在我的节点 js 项目中使用 firebase-admin。以下是我的主页的代码:

const functions = require('firebase-functions');
const express = require('express');
const  ejs = require('ejs');
var firebase = require('firebase-admin');
const app = express();

// const firebaseApp = firebase.initializeApp(
//     functions.config().firebase
// );
app.set('view engine', 'ejs');
app.set('views', './views');

app.use('/', require('./routes/index'));
app.use('/getPosts', require('./routes/posts'));
app.use('/tests', require('./routes/tests'));
exports.app = functions.https.onRequest(app);
exports.firebaseApp = function(){
    return firebase.initializeApp(
        functions.config().firebase
    );
}

文件的代码 - ./routes/tests如下:

const functions = require('firebase-functions');
var express = require('express');
var router = express.Router();
var firebase = require('firebase-admin');
//
// const firebaseApp = firebase.initializeApp(
//     functions.config().firebase
// );
const firebaseApp = require('../index.js').firebaseApp;
function getPosts(){
    const ref = firebaseApp.database().ref('users');
    return ref.once('value').then(snap => snap.val());
}

router.get('/', (req, res, next) => {
    getPosts().then(posts => {
        res.json(posts);
    });


});
module.exports = router;

问题是,当我访问时http://localhost:5000/getPosts,它显示TypeError: Cannot read property 'database' of undefined。这里的首要问题是什么?添加

firebase.initializeApp(
        functions.config().firebase
    );

在每个布局页面中,这不是一个好主意,因为它会多次初始化 firebase。我该如何解决这个问题?

标签: node.jsfirebasemodulefirebase-admin

解决方案


推荐阅读