node.js - Firebase 函数在 firebase 部署中工作,但在本地不工作
问题描述
此代码不会在 localhost 中返回任何数据,但在部署到 firebase 时效果很好。有什么建议么?(尝试使用“firebase emulators:start”和“npm run serve”)。我应该得到一个包含课程的 json 对象。
我尝试使用 try/catch 没有任何结果:
- 'npm run server' ("npm run build && firebase serve --only 函数")
错误:无法加载默认凭据。错误:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺
- 'firebase emulators:start' -> 没有错误,但 json 为空:{"courses":[]}
import * as functions from 'firebase-functions';
import {db} from './init';
import * as express from "express";
const cors = require('cors');
const app = express();
app.use(cors({origin:true}));
app.get('/courses', async (request, response) => {
const snaps = await db.collection('courses').get();
const courses:any[] = [];
snaps.forEach(snap => courses.push(snap.data()));
response.status(200).json({courses});
});
export const getCourses = functions.https.onRequest(app);
_____________________________________________________________________________
init.ts
const admin = require('firebase-admin');
admin.initializeApp();
export const db = admin.firestore();
app.get('/courses', async (request, response) => {
try {
const snaps = await db.collection('courses').get();
const courses:any[] = [];
snaps.forEach((snap: any) => courses.push(snap.data()));
response.status(200).json({courses});
}
catch(err) {
console.error(err)
}
});
export const getCourses = functions.https.onRequest(app);
解决方案
推荐阅读
- java - 使用 Spinner 过滤 ListView
- python - Python pandas:如何获取混合数据类型列中对象的数据类型?
- list - F#匹配模式鉴别器未定义问题
- mysql - 在 SQL 中比较日期 || 在 where 子句中使用日期
- javascript - React:有或没有 useCallback 的优化回调
- c++ - 如何动态存储 QVector 的地址
在另一个 QVector *>? - c# - 单击禁用按钮时C#秒表停止
- c - 将指针存储为长“警告:赋值使指针从没有强制转换的整数”
- javascript - ReferenceError:在 Vue.JS 中没有定义 require
- javascript - 未捕获的类型错误:无法设置未定义的属性“显示”并且加载程序不会消失