node-webot / co-wechat

Wechat for Koa
427 stars 91 forks source link

await getRawBody(ctx.req 函数没有返回 #22

Closed ihellodays closed 7 years ago

ihellodays commented 7 years ago

跟踪代码到 await getRawBody(ctx.req这里,await一直没有返回。。

ihellodays commented 7 years ago

在调试进去,getRawBody 这个函数最后一行

return new Promise(function executor (resolve, reject) { readStream(stream, encoding, length, limit, function onRead (err, buf) { if (err) return reject(err) resolve(buf) })

resolve(buf)这里的buf输出是有内容的

就是上一层await不出来结果

ihellodays commented 7 years ago
    var xml = await getRawBody(ctx.req, {
      length: ctx.header.length,
      limit: '1mb',
      encoding: ctx.request.charset || 'utf-8'
    });

    console.log(xml);

后面一直都没有输出

JacksonTian commented 7 years ago

我不知道你是怎么操作的啊,你用单元测试中的代码试试看?

ihellodays commented 7 years ago

用的是thinkjs框架 我们在controller 里面直接用

//公众号入口
async indexAction() {

    //post过来处理
    let appid = this.get('appid');
    let config= await this.model('mp').get(appid);
    let wetchat =  require('co-wechat')(config);

    await wetchat.middleware(async(msg) => {
        console.log( msg );

    })(this.ctx,()=>{});
    return true;
}

一直都没有返回 console.log( msg );

JacksonTian commented 7 years ago

并没有针对 thinkjs 做过兼容。

JacksonTian commented 7 years ago

出现问题应该是因为 request body 已经被解析了。