我有现有的代码,它实现了一个快速中间件。如何在Koa应用程序中使用此中间件?
当我尝试调用app.use(expressMiddleware)
以便在我的Koa应用程序中使用中间件时,Koa抱怨需要生成器函数:
AssertionError: app.use() requires a generator function
所以我想这里需要某种适配器或技巧......想法?
答案 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用于编写中间件。
您在快速中间件中收到的req
和res
在koa中间件中无法直接使用。但您可以通过this.request
和this.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不兼容。