KOA2使用async/await报404问题

本文记录了在使用KOA2框架时遇到的一个常见问题:由于未正确使用await关键字导致的中间件执行顺序错误。作者通过调试发现了问题所在,并分享了解决方案,即在调用next()之前添加await关键字,确保中间件按预期执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天KOA2在搭建系统踩了一坑。没错,世界处处是坑,废话不多说,上菜。

问题:调用接口404,后端日志有返回。

在这里插入图片描述
在这里插入图片描述
游览器调用时报了404,后端控制台打印了日志并正确的返回。

let userinfo = await mysql.execute(url, arg);

年轻的我调试中发现使用await的地方有问题,于是我去看了我用promise封装的mysql,并没有什么问题, 此处省略一万字。
于是猜想,有没有可能前一个中间件没有等待执行,就走了,回头去看,果然,最后才发现是我写的中间件有问题。

router.use(async (ctx, next) => {
    let url = ctx.url;
    let body = ctx.request.body;
    let query = ctx.query;
    console.log(url, 'body参数', body, 'query参数', query)
     next()
});

这是简单的打印了请求地址,参数。想必有人已经明白了,你这个next()没有加await,以前用express习惯了,就随手写了个,吃一堑长一智。

在这里插入图片描述

加上之后,腰不酸了,腿不疼了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值