Node.js 在不重新启动应用程序的情况下重新加载Express子应用程序

Node.js 在不重新启动应用程序的情况下重新加载Express子应用程序,node.js,express,Node.js,Express,我的老板刚刚做了一个行政决定,将我们的网站作为一个大型的Express应用程序来运行,所以我一直在努力根据我们的情况制定一个可用的设置。我们有很多小Express应用程序浏览器游戏、交互式RPG角色表、数据库查看器等,它们是完全独立的项目,有自己的Git存储库和app.js文件,我们需要能够在不重新加载整个服务器和断开其他应用程序上的用户连接的情况下,向这些应用程序推送频繁的更新。我目前的计划是有一个“apps”文件夹和一个post-commit脚本,将每个repo克隆到自己的子文件夹中 下一步

我的老板刚刚做了一个行政决定,将我们的网站作为一个大型的Express应用程序来运行,所以我一直在努力根据我们的情况制定一个可用的设置。我们有很多小Express应用程序浏览器游戏、交互式RPG角色表、数据库查看器等,它们是完全独立的项目,有自己的Git存储库和app.js文件,我们需要能够在不重新加载整个服务器和断开其他应用程序上的用户连接的情况下,向这些应用程序推送频繁的更新。我目前的计划是有一个“apps”文件夹和一个post-commit脚本,将每个repo克隆到自己的子文件夹中


下一步就是我被困的地方。我可以清除require缓存,循环apps文件夹,并在文件系统检测到更改时请求apps,但这不会删除任何已装载的路由或中间件。我无法控制子应用程序,因此无法手动命名和删除每个路由。有没有办法用Express完成这种类型的设置?

考虑到Express的设计方式,我所寻找的解决方案实际上是不可能的。我们最终通过http proxy建立了一个代理服务器,并在其各自的子域中为每个应用程序提供服务,这使得我们能够重新加载我们想要的内容,但却迫使我们寻找跨应用程序通信的替代解决方案。

Stack Overflow有一个优秀的职业网站,在该网站上,你可能会发现一家公司的老板不会做出这样的管理决策。这个用例在NodeJS中是不受支持的,它从来没有考虑过它,公平地说,它是一个相当复杂的用例——尽管它在其他一些语言(如Java)中是可能的,但它非常容易发生并泄漏内存和状态。我见过的唯一正确的语言是Erlang,lol。我强烈建议你不要将网站作为一个巨大的express应用程序运行,如果你确实使用子进程作为子应用程序。