2014-02-19 2 views
3

От koajs.com:Mount Koajs приложение на вершине Экспресс

app.callback()

Возвращение функция обратного вызова подходит для метода http.createServer() для обработки запроса. Вы также можете использовать эту функцию обратного вызова для монтирования своего приложения koa в приложении Connect/Express.

Теперь у меня есть приложение Express, которое уже запускает собственный HTTP-сервер. Как смонтировать приложение koa поверх этого существующего сервера, чтобы он имел один и тот же порт?

Включил ли бы приложение koa в качестве Express middlware? Я все еще использую для этого app.callback()?

+1

Может быть "expressapp.use (koaapp.callback())"? – bodokaiser

ответ

-1

Поскольку вам нужен экземпляр сервера для того, чтобы смонтировать промежуточное программное обеспечение на определенном /prefix, это было бы что-то вроде

var http = require('http'); 
var expressApp = require('express'); 
var koaApp = require('koa'); 

// ... 

expressApp.use('/prefix', http.createServer(koaApp.callback())); 
+0

действительно ли это работает? дает следующую ошибку: 'Router.use() требует функции промежуточного программного обеспечения, но получил '+ gettype (fn)' –

+0

, кажется, единственный способ: 'expressApp.use (' prefix ', koaApp.callback())' –

2

expressapp.use(koaapp.callback()) прекрасно. но помните, что koaapp.callback() не имеет next, поэтому в экспресс-приложение отсутствуют пропущенные ошибки или пропускается koaapp после его использования.

, лучше держать их совершенно отдельно, так как их интерфейсы несовместимы

var koaapp = koa() 
var expressapp = express() 
http.createServer(req, res) { 
    if (true) koaapp(req, res); 
    else expressapp(req, res); 
}) 
+1

Ваш условный 'if (true)' всегда будет правдой - подумайте о пересмотре своего ответа для большей ясности, если вы действительно считаете, что это условие необходимо. –

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