13

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

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

AssertionError: app.use() requires a generator function

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

4

3 回答 3

17

另外,您可以尝试 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);
于 2015-05-08T13:17:26.217 回答
6

koa 与 express 中间件不兼容。(有关详细说明,请参阅此博客文章,尤其是“编写更好的中间件”部分)。

你可以为 koa 重写你的中间件。koa wiki 有专门的中间件编写指南

您将在 express 中间件中收到的reqandres在 koa 中间件中不直接可用。但是您可以通过和访问 koa请求和 koa响应对象。this.requestthis.response

于 2014-09-16T00:54:10.283 回答
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。

于 2017-01-11T08:08:26.193 回答