BUG排查-koa2中koa-body和koa-bodyparser共用时POST会出现超时

简介: 周日有个小伙加我,帮他排查了一下问题。正好记录一下。前端是:axios后台是:koa2问题:axios 发 post 请求不携带参数请求正常,携带参数就无响应。因为我也不知道小伙那些说的是真的,那些是假的,那我们就一点一点排查,我大致定位问题为以下几个方向。参数携带不正确,axios 发过去的数据是错的,比如说被 {id: 1} 却发送的 [object Object]参数携带不正确,比如说后台只接收 appliction/json、application/x-www-form-urlencoded、multipart/form-data 其中一种这流程没毛病吧,先找前端自

排查问题


前端请求数据排查


因为不知道小伙水平,就没看 network。我让他直接请求我的接口 https://www.lilnong.top/cors/koa-sf,然后让他截图。


发现数据被收到了,证明前端肯定是没问题的。


bVbEA3j.webp.jpg


服务端排查


路由排查


开始我怀疑他路由配置有问题。看上去这个路由也没问题。有请求就应该能收到。


bVbEA8s.webp.jpg


content-type 限制排查


原生的话,就是监听流,然后拼接。


new Promise(function(resolve){
    let str = ''
    ctx.req.on('data', (data) => {
        str += data
    })
    ctx.req.addListener('end', () => {
        resolve(str)
    })
})


中间件的话,就是 koa-bodykoa-bodyparser 之类的,通过小伙的截图看到如下画面。支持多种类型,起来也没问题。


2.png


其他中间件排查


因为小伙是新手嘛,总有可能用一些奇奇怪怪的中间件,看看是不是有什么检查阻塞了请求。


bVbEBgj.webp.jpg


这张图片上就有疑点了,使用了两个中间件都是处理 body 的。


app.use(bodyParser())

app.use(KoaBody())

用关键词一搜索,妥妥的 BUG 呀。那我们把 app.use(bodyParser()) 一删就 OK 了。


bVbEBi4.webp.jpg


起服务,刷页面,测试,OK。


为什么 koa-bodyparserkoa-body 一起使用会有问题


感兴趣的小伙伴可以去看看源码。


这两个库都依赖 co-body 这个库,这个库里面依赖 raw-body。然后下图可以看到,使用的还是流。


bVbEBog.webp.jpg

相关文章
|
5月前
|
机器学习/深度学习 前端开发 JavaScript
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
130 0
源映射错误:Error: request failed with status 404 源 URL:http://localhost:8080/bootstrap/js/axios-0.18.0.js
|
5月前
|
前端开发 JavaScript UED
前端 js 经典:async 和 await
前端 js 经典:async 和 await
63 2
|
4月前
|
前端开发 JavaScript
如何使用 await-to-js 库优雅的处理 async await 错误
如何使用 await-to-js 库优雅的处理 async await 错误
73 0
|
5月前
|
JavaScript 前端开发 API
在js中get和post的区别
在js中get和post的区别
|
5月前
|
数据采集 JavaScript 前端开发
利用axios库在Node.js中进行代理请求的实践
利用axios库在Node.js中进行代理请求的实践
|
JavaScript 前端开发 API
JS method请求方式的应用
JS method请求方式的应用
71 0
|
5月前
|
前端开发 API UED
Spartacus SSR 期间使用 browser function 会导致 error,回退到 CSR
Spartacus SSR 期间使用 browser function 会导致 error,回退到 CSR
|
前端开发 中间件
82 # koa-bodyparser 中间件的使用以及实现
82 # koa-bodyparser 中间件的使用以及实现
60 0
|
移动开发 编解码 weex
weex开发 - 加载index.js崩溃,白屏(may it has been destroyed so method:fireEvent is ignored,Url must be passe)
weex开发 - 加载index.js崩溃,白屏(may it has been destroyed so method:fireEvent is ignored,Url must be passe)
340 0