在koa中间件中使用ctx

Using ctx in koa middlware

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

.use(signS3())

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

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

但这行不通。我想我的语法有误,希望能提供有关如何执行此操作的任何输入。

您正在使用为 koa@1 编写的中间件,它使用生成器而不是 async/await。当 运行 您的应用程序:

时,您应该注意到此警告

koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware 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

的官方文档