将koa v1迁移到v2

时间:2017-07-15 08:36:32

标签: javascript node.js koa koa2 koa-router

我正在使用koa的一些模块,他们只有这个用koa v1而不是v2编写的文档。因为我之前从未使用过v1,所以我不知道如何在v2中写这个。

app
  .use(body({
    IncomingForm: form
  }))
  .use(function * () {
    console.log(this.body.user) // => test
    console.log(this.request.files) // or `this.body.files`
    console.log(this.body.files.foo.name) // => README.md
    console.log(this.body.files.foo.path) // => full filepath to where is uploaded
  })

3 个答案:

答案 0 :(得分:1)

从Koa v1更改为Koa v2是一个非常简单的过程。版本颠覆的唯一原因是它使用async函数而不是中间件的生成器。

示例v1中间件:

app.use(function* (next) {
  yield next
  this.body = 'hello'
})

示例v2中间件:

app.use(async (ctx, next) => {
  await next()
  ctx.body = 'hello'
})

使用async函数代替生成器,并接受ctx作为参数,而不是使用this

答案 1 :(得分:0)

function *()更改为async function(ctx),其中koa2中的ctx与koa1中的this相似

请参阅:http://koajs.com/#context

答案 2 :(得分:0)

app
  .use(body({
    IncomingForm: form
  }))
  .use(function(ctx) {
    console.log(ctx.body.user) // => test
    console.log(ctx.request.files) // or `this.body.files`
    console.log(ctx.body.files.foo.name) // => README.md
    console.log(ctx.body.files.foo.path) // => full filepath to where is uploaded
  })