在koa middlware中使用ctx

时间:2017-09-28 16:39:18

标签: node.js middleware koa

我有一个像我这样使用的koa中间件:

.use(signS3())

我现在要做的是使用来自signS3()的配置对象中来自koa的ctx对象。我想做这样的事情:

.use((ctx, next) => signS3({ keyPrefix: ctx.host })(ctx, next))

但这不起作用。我在想我的语法有误,不胜感激任何有关如何做到这一点的意见。

1 个答案:

答案 0 :(得分:1)

您正在使用为koa@1编写的中间件,它使用生成器而不是async/await。运行应用程序时应该注意到这个警告:

  

koa弃用对发电机的支持将在v3中删除。有关如何转换旧中间件https://github.com/koajs/koa/blob/master/docs/migration.md

的示例,请参阅文档

要在koa@2中使用此中间件,您需要手动或使用koa-convert进行转换。例如:

const convert = require('koa-convert');

app.use(
  (ctx, next) => convert(
    signS3({
      bucket: 'MyBucket',
      keyPrefix: ctx.host,
    })
  )(ctx, next)
);

另请参阅有关Using v1.x Middleware in v2.x

的官方文档