我来自java背景,我开始使用节点js,我现在喜欢它。 在将其发布到SO中之前,我已经阅读了与我的问题类似的其他主题。
我有3个不同的节点应用程序(app 1,app2,app3) 通常,如果它在java中我将在tomcat中部署三个应用程序并可以在本地访问它们,如localhost:8080 / app1,localhost:8080 / app2等。 我在节点js中寻找类似的方法。我看过这个thread 并在全局安装了express,并使用此代码生成了一个名为master.js的脚本
var express = require(' express'); var app = express();
app .use(' / app1',require(' ./ app1 / server.js')。app).use(' / app2', 要求(' ./ app2 / server.js')。app).listen(8080);
但即将到来
TypeError:无法读取属性'处理'未定义的
由于我是节点新手,我不确定这个过程是否像设置代理等一样复杂,如thread
中所述基本上我正在寻找在同一个端口部署所有应用程序并访问它们,如localhost:8080 / app1,localhost:8080 / app2
我需要nginx和代理才能实现这个目标吗?
同样在ec2实例中,我可以通过进入app1文件夹并键入node server.js来运行我的节点应用程序,这样应用程序将在端口8080中列出,但是当我按ctrl c执行其他任务时,它终止了应用程序。< / p>
答案 0 :(得分:1)
您需要为每个应用使用变量,然后使用它。尝试:
var app1 = require('./app1/server.js').app
var app2 = require('./app2/server.js').app
app.use('/app1', app1).use('/app2', app2).listen(8080);
答案 1 :(得分:1)
您不需要nginx / proxy来处理这个问题。从我所看到的,如果你的app1 | app2 / server.js -s是这样构建的,你的代码应该可以工作:
var express = require('express');
var app = express();
app.get('/hello', function() {...})
module.exports = {
app: app
}
现在您可以将GET请求发送到/ app1 / hello和/ app2 / hello