2016-02-10 3 views
2

Я из java-фона, я начал использовать узел js и им нравится это сейчас. Я прочитал другие темы, похожие на мои вопросы, прежде чем я разместил их в SO.Запустить приложение с несколькими узлами в том же порту ec2

У меня есть 3 разных приложения (приложение 1, app2, app3) Обычно, если его в java я развожу три приложения в tomcat и могу получить к ним доступ локально, как этот localhost: 8080/app1, localhost: 8080/app2 и т. Д. . Im ищет аналогичный подход в узле js. Я прочитал это thread и установлен экспресс глобально и сделал скрипт master.js с этим кодом

var express = require('express'); var app = express();

app .use('/app1', require('./app1/server.js').app) .use('/app2', require('./app2/server.js').app) .listen(8080);

, но им получать

TypeError: Cannot read property 'handle' of undefined

Поскольку им новое для узла, им не уверен, что этот процесс сложна, как установка прокси и т. д., как упомянуто в этом документе. thread

В основном им требуется развертывание всех моих приложений в одном и том же порту и доступ к ним, как localhost: 8080/app1, localhost: 8080/app2

Мне нужен nginx и прокси для достижения этого?

Также в экземпляре ec2 я могу запустить приложение для узла, перейдя в папку app1 и набрав узел server.js, чтобы приложение отображалось на порту 8080, но когда я нажимаю ctrl c для выполнения другой задачи, оно прекратило приложение.

+0

В зависимости от файлов приложения app1, файлов приложений2, эта логика должна работать. Вы экспортируете экспресс-экземпляры из этих файлов? вы можете показать нам, как выглядит server.js-s. – user1695032

+0

@ user1695032: my app1 и app2 являются приложениями separte express, поэтому server.js будет иметь все мои маршруты и другие параметры, которые я настроил – optimus

ответ

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/привет и/app2/привет

+0

И я пропустил Экспортную часть в server.js и вместо этого настроен на прослушивание в самом сервере server.js, поэтому экспорт приложений теперь работает – optimus

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

Есть ли автоматический способ сделать это? используя какой-то внешний инструмент, такой как pm2 или что-то в этом роде, есть ли способ сделать это как в Apache (просто поместите в него другой каталог, и вы готовы к работе)? –

Смежные вопросы