首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试解析请求正文时POST请求挂起(超时),在Firebase Cloud Functions上运行Koa

尝试解析请求正文时POST请求挂起(超时),在Firebase Cloud Functions上运行Koa
EN

Stack Overflow用户
提问于 2019-10-04 21:22:19
回答 1查看 530关注 0票数 1

我在一个小网站上工作,使用Firebase托管(FH)提供静态文件,并将所有请求重写为Firebase Cloud Functions (FCF)上的单个函数,在那里我使用Koa (与koa-router)来处理请求。然而,当我尝试使用koa-bodyparser解析POST请求的正文时,服务就会挂起,直到它最终超时。

使用其他主体解析器时也会发生同样的情况,例如koa- body,而且无论我将解析器放在哪里,它似乎都会持续存在,除非我将它放在路由器之后,在这种情况下,问题就消失了,尽管我仍然无法访问数据,因为它从来没有机会被解析(?)。

以下是导致问题的代码的精简版本:

代码语言:javascript
复制
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)之外,我还不能产生任何实际的错误或有用的错误消息,所以我没有太多东西可以继续,也不能为您提供比我已经拥有的更多的信息。

我该如何着手获取数据?

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 08:40:38

Firebase已经解析了正文。

https://firebase.google.com/docs/functions/http-events#read_values_from_the_request

看起来,提供的Koa body解析中间件不知道如何处理“已解析”的body (即对象与未解析的字符串),因此中间件最终会感到困惑,并进行某种类型的无限循环。

一种解决方案是使用ctx.req.body,因为它已经被解析。:)

Koa太棒了!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58237305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档