【发布时间】:2021-03-02 18:28:37
【问题描述】:
我想在同一台服务器上运行多个 Node js 应用程序,到目前为止,我在此处针对类似问题做了一些进度检查解决方案(链接如下)。假设我有 2 个应用程序,每个应用程序都提供一些 html 文件,我想通过访问来访问每个应用程序
https://example.com/app1 和
https://example.com/app2
到目前为止,我有我的主应用程序,我的方法是调用此应用程序,然后它将客户端重定向到这两个应用程序之一。
我的主应用如下所示:
const express = require('express');
const app = express();
app
.use('/app1', require('./app1/index.js'))
.use('/app2', require('./app2/index.js'))
.listen(80);
我的两个子应用(app1 和 app2)中的每一个看起来都像这样
const express = require('express');
const bodyParser = require('body-parser');
const routes = require('./routes/api');
const mongoose = require('mongoose');
require('dotenv/config');
const app = express();
mongoose.connect(
process.env.DB_CONNECTION,
{ useNewUrlParser: true, useUnifiedTopology: true }, () =>
console.log('Connected to DB')
);
mongoose.Promise = global.Promise;
app.use(express.static('public'));
app.use(bodyParser.json());
app.use('/', routes);
app.use(function (err, req, res, next) {
res.status(422).send({ error: err.message })
});
问题是我在部署这些应用程序并访问后什么都没有得到。 https://example.com/app1
我对这一切都很陌生,所以这里可能是初学者的错误。有人可以帮忙吗?
相关问题How to mount express.js sub-apps?和Running multiple Node (Express) apps on same port
【问题讨论】:
-
您应该查看
express.Router并从它们单独的文件中导出应用程序,因为如果没有导出,只需一个文件不会返回任何内容 -
使用像nginx这样的反向代理,你不需要手动处理。在两个不同的 prot 上运行这两个应用程序。它可以匹配 url 中的模式,根据该模式将请求重定向到相应的应用程序。
-
我想如果您将
module.exports = app添加到您的应用文件中,这应该可以正常工作
标签: javascript node.js express