Мне нужно запустить несколько приложений Node на одном порту. Я узнал, что могу запускать несколько узловых приложений, используя один порт, благодаря этому вопросу SO Запуск нескольких приложений Node (Express) на одном порту Но у меня это не работает, вероятно, потому что. Я использую Restify, если я где-то не сделал что-то не так.
У меня уже есть "app1", работающий на этом одном порту с использованием PM2, созданного с помощью Restify. Я создал другое приложение 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. Ни на одном порту не запущено ни одного приложения узла.