2014-08-19 10 views
9

У меня есть код, который реализует экспресс-промежуточное программное обеспечение. Как я могу использовать это промежуточное ПО в приложении Koa?Использование экспресс-промежуточного программного обеспечения в koa

Когда я пытаюсь вызвать app.use(expressMiddleware) для того, чтобы использовать промежуточное программное обеспечение в моем приложении Коа, Коа жалуется, что функция генератора требуется:

AssertionError: app.use() requires a generator function 

Так что я думаю, что какое-то адаптер или трюка здесь требуется ... идеи?

ответ

13

Кроме того, вы можете попробовать КоА-подключения: 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); 
+4

Забавная штука, koa-connect была создана в тот же день, когда я изначально задал этот вопрос :) – urish

3

koa несовместим с экспресс-программным обеспечением. (см. this blog post для подробного объяснения, особенно в части «Лучшее письменное промежуточное ПО»).

Вы можете переписать вам промежуточное программное обеспечение для koa. У вики koa есть специальный guide для написания промежуточного программного обеспечения.

req и res, которые вы получили бы в прямом промежуточном программном обеспечении, непосредственно не доступны в промежуточном программном обеспечении koa. Но у вас есть доступ к koa request и koa response объектов через this.request и this.response.

+0

Спасибо Марко, однако, я надеялся найти способ обойти это ограничение ... – urish

2

У меня есть создать koa2-подключения на НОМ koa2. https://github.com/cyrilluce/koa2-connect

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

Поскольку КоА-соединения соединяется автор не публиковать следующую версию (НПМ я КоА-подключения @ следующий не работает), и он не совместим с WebPack-DEV-промежуточного слоя и WebPack-горячего промежуточного слоя ,

Смежные вопросы