【发布时间】:2016-07-08 10:34:23
【问题描述】:
我需要在同一个端口上运行多个 Node 应用程序。我发现我可以使用一个端口运行多个节点应用程序,这要归功于这个 SO 问题Running multiple Node (Express) apps on same port 但它可能对我不起作用。除非我在某处做错了什么,否则我会使用 Restify。
我已经在 this 一个端口上运行了 "app1",使用的是使用 Restify 构建的 PM2。我制作了另一个应用“app2”。路径如下:
/var/www/app1
/var/www/app2
每个应用都有这样的共同路线:
app.get('/', func...);
app.get('/about', func...);
app.post('/foo', func...);
app.post('/bar', func...);
我已将 "app1" 的最后几行代码设置为:exports.app = app 而不是 app.listen(8080, function() { ... });
并且,app 是
var app = restify.createServer({
name: 'app1'
});
“app2”也一样...
我的main.js 文件(保存在/var/www/)也是基于Restify 构建的:
main
.use('/app`', require('./app1/index').app)
.listen(8080);
main 在哪里
var main = restify.createServer({
name: 'main'
});
但是当我输入 node main.js 时出现这样的错误(我还没有尝试使用 PM2):
/var/www/node_modules/restify/node_modules/assert-plus/assert.js:45
throw new assert.AssertionError({
^
AssertionError: handler (function) is required
at process (/var/www/node_modules/restify/lib/server.js:76:24)
at argumentsToChain (/var/www/node_modules/restify/lib/server.js:84:13)
at Server.use (/var/www/node_modules/restify/lib/server.js:625:6)
at Object.<anonymous> (/var/www/main.js:47:8)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
注意: 我已经关闭了在 PM2 下运行的所有应用。任何端口上都没有运行节点应用程序。
【问题讨论】:
-
你不能......但是你可以在多核系统中运行同一个应用的多个实例......!
-
app.use() 是特定于 express 的,不能用于将请求转发到除另一个 express“应用程序”之外的任何东西。请参阅下面的答案,了解支持异构服务器的唯一方法。
标签: javascript node.js express restify pm2