Firebase 功能在部署时有效但不在本地

时间:2021-02-05 14:25:29

标签: node.js firebase google-cloud-functions

我有一个函数可以从我的 firebase 中获取数据并显示它。这在部署时可以完美运行,但不能在本地运行。

我附上了我的代码以防万一,但看到它在部署时有效,我认为这不是问题,它的副本也是从 freecodecamp 教程中粘贴过来的。

目录如下:

firebase folder
|functions
||APIs
|||todos.js
||util
|||admin.js
||index.js

此外,本地版本确实有输出,它只是在 todos.js 第 9 行初始化的空数组。

//todos.js
const { db } = require('complete file path');

exports.getAllTodos = (request, response) => {
    db
        .collection('todos')
        .orderBy('createdAt', 'desc')
        .get()
        .then((data) => {
            let todos = [];
            data.forEach((doc) => {
                todos.push({
                    todoId: doc.id,
                    title: doc.data().title,
                    body: doc.data().body,
                    createdAt: doc.data().createdAt,
                });
            });
            return response.json(todos);
        })
        .catch((err) => {
            console.error(err);
            return response.status(500).json({ error: err.code});
        });
};

//admin.js
const admin = require('firebase-admin');

admin.initializeApp();

const db = admin.firestore();

module.exports = { admin, db };
//index.js
const functions = require('firebase-functions');
const app = require('express')();

const {
    getAllTodos
} = require('./APIs/todos')

app.get('/todos', getAllTodos);
exports.api = functions.https.onRequest(app);

我也执行了 export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" 无济于事。

1 个答案:

答案 0 :(得分:2)

您在没有任何凭据的情况下初始化了应用程序:

const refreshToken; // Get refresh token from OAuth2 flow

admin.initializeApp({
  credential: admin.credential.refreshToken(refreshToken),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

[参考此网站了解更多信息:] https://firebase.google.com/docs/admin/setup/#initialize-without-parameters

相关问题