【发布时间】:2020-02-02 20:17:43
【问题描述】:
我正在开发一个小型网站,使用 Firebase 托管 (FH) 提供静态文件,并将所有请求重写到 Firebase Cloud Functions (FCF) 上的单个函数,我使用 Koa(带有 koa-router)来处理请求。但是,当我尝试使用 koa-bodyparser 解析 POST 请求的主体时,服务会一直挂起,直到最终超时。
使用其他 body 解析器(例如 koa-body)时也会发生同样的情况,并且无论我将解析器放在哪里,它似乎都会持续存在,除非我将它放在路由器之后,在这种情况下问题就消失了,虽然我仍然无法访问数据,因为它永远没有机会被解析(?)。
以下是导致问题的代码的精简版本:
import * as functions from 'firebase-functions'
import * as Koa from 'koa'
import * as KoaRouter from 'koa-router'
import * as KoaBodyParser from 'koa-bodyparser'
const app = new Koa()
const router = new KoaRouter()
app.use(KoaBodyParser())
router.post('/', (context) => {
// do some stuff with the data
})
app.use(router.routes())
export const serve = functions.https.onRequest(app.callback())
我对所有这些工具还是很陌生,我可能遗漏了一些非常明显的东西,但我似乎无法在任何地方找到解决方案。如果我没记错的话,FCF 会自动解析请求,但 Koa 无法访问该数据,除非它自己解析,所以我认为 FCF 的自动解析和 Koa 使用的解析器之间出现了问题。
除了网关超时 (504) 之外,我无法生成任何实际错误或有用的错误消息,因此我没有太多工作要做,也无法为您提供更多比我已经拥有的。
如何获取数据?
【问题讨论】:
标签: node.js typescript firebase google-cloud-functions koa