在koa中间件中使用ctx

我有一个我正在使用的koa中间件:

.use(signS3())

我现在想要做的是使用来自ko​​a的ctx对象来自signS3()的configuration对象。 我想要做这样的事情:

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

但是这不起作用。 我想我的语法错了,将不胜感激任何投入如何做到这一点。

您正在使用为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) ); 

另外看看有关在v2.x中使用v1.x中间件的官方文档