如何挂载express.js子应用程序?
我有几个应用程序试图合并为一个“套件”:2个应用程序是独立的,一个只是一个身份验证层(使用FB Connect的Everyauth)。我想这样设置:
- /-(首页)应用列表
- / auth-登录任何应用程序
- / app1-需要通过/ auth登录才能访问
- / app2-(相同)
我曾考虑过让app1和app2保持独立,顶层是代理,但是我认为要在它们之间共享身份验证系统很困难。虚拟主机(通过Connect)也许可以工作,但我不一定要为每个主机都使用DNS子域。因此,相反,我希望主应用程序成为auth层,而其他应用程序“挂载”到该层中,每个应用程序上的
basepath
设置为子路径。(在快速指南中提到了基本路径,但没有很好地记录下来。)
他们都使用MongoDB,身份验证层使用connect-mongodb进行会话,因此我希望它们能够在它们之间共享整个身份验证/会话层。
在另一个主题“如何在已安装的Express应用程序中共享会话”中,Stephen写道,
我有一个相当复杂的基于Express的Web应用程序,该应用程序分为几个子应用程序,这些子应用程序也属于Express应用程序(使用app.use())…
那么,如何使用它app.use()
来安装子应用程序呢?我只是尝试使用var subApp =
require('./subapp/app.js'),listen()
仅当在子应用程序中运行时!
module.parent(而不是作为子应用程序)...但这似乎将所有子应用程序的路径直接加载到父应用程序中。我尝试在子应用程序本身和父应用程序中都basepath
使用app.set('basepath',
'/subapp/'),app.basepath = '/subapp/'
等设置,但这似乎没有任何效果。
像这样挂载的应用程序使express变得异常灵活,但目前尚不清楚该怎么做…任何建议都将非常受欢迎!(如果有人为此感到苦恼,我很乐意分享我的Everyauth实现的经验教训。)
回答:
app.use(uri, instanceOfExpressServer)
只要确保您不要求.listen
它。
另一种方法是require("cluster")
在单个主服务器中使用和调用所有应用程序,以便它们共享同一端口。然后只需路由即可“正常工作”
以上是 如何挂载express.js子应用程序? 的全部内容, 来源链接: utcz.com/qa/405839.html