2016-11-08 135 views
1

在我的angular2應用程序中,在EBS上,我定義了一個PORT環境變量。然後我使用那個端口變量,或者至少我試着在我的節點服務器中使用它。EBS/AWS With Node/angular2應用程序將端口設置爲8081

console.log("Express Serversss listening on " + global.process.env.PORT + " for env " + global.process.env.NODE_ENV); 

然後我在EBS配置區域內設置我的端口爲3001。但是,當我然後將應用程序部署到EBS,它總是給我:

「Express服務器上的8081監聽ENV分期: 8081端口已在使用」在我的代碼

然而,沒有在哪裏有8081端口在任何地方聲明。所以我不太確定這個端口號是從哪裏來的。

想法?

+0

它看起來像是被覆蓋到8081.其他process.env變量保持不變...但是PORT沒有。 –

回答

0

我現在沒有把它放在眼前,但一般情況下你會如何在彈性beanstalk應用程序環境設置中執行它,你可以指定環境變量或更新你的應用程序的啓動命令以包含一個PORT變量。

  • 使用環境變量,你會說PORT = 2222(或任何你想要的)
  • 或者,你的命令可以從node myserver.js改爲PORT=2222 node myserver.js

此外,在實際代碼,您需要確保您的應用程序未被明確編程爲在某個特定端口上運行。如果是的話,你必須添加對你試圖運行它的端口的支持。

希望能爲您提供正確的工作方式。我花了一段時間才弄清我第一次使用豆莖。

0

我想通了這個問題。我不僅認爲我可以重寫AWS分配給process.env.PORT的端口,而我不能,我還在實際節點服務器之前創建套接字服務器。由於節點express生成器將服務器初始化放入bin/www中,因此在創建後我需要將服務器傳遞給socket.io。

var port = normalizePort(process.env.PORT || '3001'); 
app.set('port', port); 

/** 
* Create HTTP server. 
*/ 

var server = http.createServer(app); 

/** 
* Listen on provided port, on all network interfaces. 
*/ 

server.listen(port); 
server.on('error', onError); 
server.on('listening', onListening); 


var io = require('socket.io')(server); 
require('../routes/socket.js')(io); 

這工作!

相關問題