经过一段时间解决这个问题后,我发现了一个可能的解决方案而又不损害原始设置。
我们使用Express vhost软件包来设置通过虚拟域处理请求。
创建应用程序实例时,应使用要单独公开的数量来使用Express初始化尽可能多的应用程序(在我们的示例中,它是三个独立的应用程序以及原始应用程序实例)
// Create an express instanceconst app = express();const appAdmin = express();const appClient = express();const appVendor = express();
之后,您需要安装vhost并将其导入。然后,通过为每个应用程序指定静态文件夹,您可以分别处理提供的静态文件,其余部分分别处理给定子域的请求。
appAdmin.use(express.static(path.join(__dirname, 'build-admin'))); appClient.use(express.static(path.join(__dirname, 'build-client'))); appVendor.use(express.static(path.join(__dirname, 'build-vendor'))); appAdmin.use((req, res, next) => { return res.sendFile(path.resolve( __dirname, 'build-admin' , 'index.html')); }); appClient.use((req, res, next) => { return res.sendFile(path.resolve( __dirname, 'build-client' , 'index.html')); }); appVendor.use((req, res, next) => { return res.sendFile(path.resolve( __dirname, 'build-vendor' , 'index.html')); }); app.use(vhost('domain.com', appClient)); app.use(vhost('www.domain.com', appClient)); app.use(vhost('a.domain.com', appAdmin)); app.use(vhost('b.domain.com', appVendor));不要忘记在域的DNS注册表中添加所需的子域。例:
...recordsCNAME vendor @CNAME admin @



