当前位置: 首页 > 面试题库 >

如何挂载express.js子应用程序?

呼延庆
2023-03-14
问题内容

我有几个应用程序试图合并为一个“套件”: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 应用程序中分解和模块化文件的通用约定?还是将所有内容保存在一个文件中很普遍? 问题答案: 我的分解如下: 我使用Exports返回相关内容。例如,在模型中,我这样做: 然后,如果我需要创建一个电话号码,则非常简单: 如果我需要使用架构,那么 (假设我们正在routes文件夹中工作,需要先上一层然后再下一层模型) 编辑4 该 快递维基 具有建立在它之上的框

  • 问题内容: 说我有这段代码来分隔expressjs中的路由: 并要求在: 1)如何以最佳方式将数据库查询分为新文件? 即使我分开数据库逻辑,该文件也会变得很大。 2)什么是分隔路线的好方法?也许是单独的模块?然后要求他们都参加? 问题答案: 这里有一个类似的问题,您应该阅读:如何构建express.js应用程序? 1)您所有的查询逻辑都应放在模型中(例如,位于/ models中的模块) 2)将您的

  • 问题内容: 如何检测expressJS应用程序在什么环境中运行?(开发,测试,生产?)。没有任何迹象表明环境… 我知道您可以在每种环境下的配置文件中声明变量,但这对动态加载模块没有帮助… 问题答案: 您可以通过选中(可以在Express中使用)检查环境,也可以通过直接检查(在该变量中找到的环境或默认为“开发”中的环境)来更直接地进行操作。其他库,例如Socket.IO等)。

  • 创建一个 volume volume1 请问有没有什么办法把 volume1/dir1挂载到 xxx 呢?

  • 我正在尝试在我的多租户应用程序中实现假客户概念。我有两个微服务。在其中一个微服务中,我编写了从数据库获取数据的API。我需要在我的其他微服务中使用这些数据。为此,我使用了假客户概念。我需要第二个微服务加载期间的数据。但这并没有发生。我有以下错误 这是我的基于数据源的MultitenantConnectionProviderImpl。类,我在其中编写了伪客户机逻辑 这是一个虚拟客户端。我将第二个微服

  • 我想运行节点。js与asp。net mvc用于执行套接字。io操作。 我已经成功地包含了节点。js在asp。net mvc,如本文所述 我的问题是如何在ASP.NET MVC中运行express.js, 我已经在Global.asax.cs文件中执行了url重写,如< br > void Application_BeginRequest(对象发送方,EventArgs e) { //获取当前路径