Node.js 将Koajs应用程序安装在Express顶部

Node.js 将Koajs应用程序安装在Express顶部,node.js,express,koa,Node.js,Express,Koa,来自koajs.com: app.callback() 返回一个适合http.createServer()方法处理请求的回调函数。您也可以使用这个回调函数将膝关节炎应用程序安装在Connect / Express应用程序中。 现在我有了一个Express应用程序,它已经启动了自己的http服务器。我如何在现有服务器上安装一个膝关节炎应用程序,以便它共享同一个端口? 我会把膝关节炎应用程序作为一个Express中间件吗?我是否仍然使用app.callback()进行此操作?因为您需要一个服务器实例

来自koajs.com:

app.callback()

返回一个适合http.createServer()方法处理请求的回调函数。您也可以使用这个回调函数将膝关节炎应用程序安装在Connect / Express应用程序中。 现在我有了一个Express应用程序,它已经启动了自己的http服务器。我如何在现有服务器上安装一个膝关节炎应用程序,以便它共享同一个端口?


<>我会把膝关节炎应用程序作为一个Express中间件吗?我是否仍然使用
app.callback()
进行此操作?

因为您需要一个服务器实例,以便在特定的
/前缀
上挂载中间件,这类似于

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

// ...

expressApp.use('/prefix', http.createServer(koaApp.callback()));
expressapp.use(koaapp.callback())
可以。但是请记住,
koaapp.callback()
没有
next
,因此不会向express应用程序传递错误,也不会在使用koaapp后跳过它

最好将它们完全分开,因为它们的API不兼容

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

可能是“ExpApp。使用(KoApp.CalbBouter))?你的条件<代码>(true)永远是真的。如果你真的认为条件是必要的,考虑修改你的答案更加清晰。它真的有用吗?它给出了以下错误
Router.use()需要中间件函数,但得到了一个'+gettype(fn)
似乎唯一的方法是
expressApp.use('prefix',koaApp.callback())