请求主体在KOA中未定义

我有像下面这样的KOA

var koa = require('koa'),
bodyParser = require('koa-body-parser'),
router = require('koa-router'),
app = koa();
app.use(router(app));
app.use(bodyParser());
app.post('http://localhost/get',getit);

function *getit(){
 console.log(this.req.body); //undefined
}

然后通过jquery ajax发送一个帖子要求:

 var xhr = $.ajax({
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            url: 'http://localhost/getit',
            data: {"name":"me"},
            success: function(response) {

            }
        });

但是在koa和this.req我找不到我的数据。在谷歌浏览器开发人员工具中,我可以看到标题,并且一切正常,但是我在koa中看不到它。

更新资料

正确的是:

   function *getit(){
 console.log(this.request.body); //undefined
}
小胖Gil2020/03/30 17:20:06

根据评论,对我来说正确的是this.request.bodythis.req.body也不正确的。

神无2020/03/30 17:20:06

koa按照初始化它们的顺序使用中间件。因此,如果您在bodyparser之前插入路由器,它将无法正常工作。由于您的请求不会在到达路由器中间件之前传递给解析器,因此不会解析该请求,并且koa将忽略request.body。因此订购非常重要。