在koa中使用快速中间件

时间:2014-08-19 13:59:13

标签: node.js express koa

我有现有的代码,它实现了一个快速中间件。如何在Koa应用程序中使用此中间件?

当我尝试调用app.use(expressMiddleware)以便在我的Koa应用程序中使用中间件时,Koa抱怨需要生成器函数:

AssertionError: app.use() requires a generator function

所以我想这里需要某种适配器或技巧......想法?

3 个答案:

答案 0 :(得分:14)

此外,您可以尝试koa-connect:https://github.com/vkurchatkin/koa-connect

看起来很简单:

var koa = require('koa');
var c2k = require('koa-connect');
var app = koa();

function middleware (req, res, next) {
  console.log('connect');
  next();
}

app.use(c2k(middleware));

app.use(function * () {
  this.body = 'koa';
});

app.listen(3000);

答案 1 :(得分:4)

koa与快速中间件不兼容。 (有关详细说明,请参阅this blog post,尤其是“更好的书面中间件'”部分。

你可以为koa重写你的中间件。 koa wiki有一个特殊的guide用于编写中间件。

您在快速中间件中收到的reqres在koa中间件中无法直接使用。但您可以通过this.requestthis.response访问koa request和koa response个对象。

答案 2 :(得分:2)

我已经在npm为koa2创建了koa2-connect。 https://github.com/cyrilluce/koa2-connect

npm i koa2-connect -S
// usage same as koa-connect

因为koa-connect的作者没有发布下一个版本(npm i koa-connect @ next没有用),并且它与webpack-dev-middleware和webpack-hot-middleware不兼容。