在koa中间件中使用ctx
我有一个我正在使用的koa中间件:
.use(signS3())
我现在想要做的是使用来自koa的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中间件的官方文档