Node.js 如何在同一台主机上运行多个Swaggerize实例?

Node.js 如何在同一台主机上运行多个Swaggerize实例?,node.js,express,proxy,swagger,paas,Node.js,Express,Proxy,Swagger,Paas,因此,我试图为节点应用程序()构建一个简单的PaaS,我发现了一些非常奇怪的行为 基本上-您可以在主机上运行BasePlatform,它使用http代理在端口8080上启动代理服务器,并在端口8180上启动Swaggerize express实例。最初,它代理端口8080到8180上的所有请求,8180是安装新应用程序的API 您可以上载应用程序并指定一个域名,该域名的DNS指向同一主机(用于测试的localhost),并且基于该域名,该域名将代理请求到在备用端口上运行的应用程序 因此,我创建了

因此,我试图为节点应用程序()构建一个简单的PaaS,我发现了一些非常奇怪的行为

基本上-您可以在主机上运行BasePlatform,它使用http代理在端口8080上启动代理服务器,并在端口8180上启动Swaggerize express实例。最初,它代理端口8080到8180上的所有请求,8180是安装新应用程序的API

您可以上载应用程序并指定一个域名,该域名的DNS指向同一主机(用于测试的localhost),并且基于该域名,该域名将代理请求到在备用端口上运行的应用程序

因此,我创建了第二个swaggerize express应用程序,并将其上传到运行在端口8005上的BasePlatform。但是,当我尝试查看为运行在端口8005上的应用程序自动生成()的Swagger JSON时,我得到了运行在端口8180上的默认应用程序的JSON

如果我独立启动应用程序并点击端口8005,我会得到正确的JSON

我不了解在主机的一个端口上运行的节点进程如何与在另一个端口上运行的节点进程发生冲突,我正在寻找一些见解

注意-这是我试图直接在启动应用程序的端口上点击已安装应用程序的json。如果我尝试在8080端口(通过代理)查看它,我会得到相同的行为。我的静态路由没有被Swaggerize自动处理,但它的工作状态与预期一样——在Swaggerize处理的路由之间似乎只有交叉点

任何帮助都将不胜感激

找到了

启动子进程时,我隐式地将当前工作目录保留为父进程(BasePlatform)的工作目录:

const fork = require('child_process').fork;
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('./deployments/'+oldAppId+'-'+latestDeployId+'/server.js');
const fork = require('child_process').fork;
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('server.js',[],{
    cwd: './deployments/'+oldAppId+'-'+latestDeployId
});
在这样做的过程中,子进程的Swaggerize路由器正在拾取父进程的swagger.yaml文件(因为它被卡在父进程的当前工作目录中),而不是它自己的文件

我修改了它,将当前工作目录设置为子进程的工作目录:

const fork = require('child_process').fork;
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('./deployments/'+oldAppId+'-'+latestDeployId+'/server.js');
const fork = require('child_process').fork;
app.locals.settings.deployedProcesses[oldAppId+'-'+latestDeployId] = fork('server.js',[],{
    cwd: './deployments/'+oldAppId+'-'+latestDeployId
});