题 在Heroku上设置node.js服务器的端口


我使用以下行启动了node.js服务器来设置端口:

app.set('port', process.env.PORT || 8080);

这意味着,它应该读取PORT env变量或默认为8080,就像在本地运行时一样。他们都没有在Heroku上发生,服务器总是使用默认端口80.任何想法如何改变它?

heroku config
PORT: 8080

21
2018-02-24 21:02


起源


是什么 heroku config:get PORT给你 ?此外,你可以尝试 heroku config:unset PORT并查看您的硬编码默认值是否被提取。 - tgo
'heroku config:get PORT'给了我8080,但该应用程序在80上提供。在'heroku config:unset'之后没有变化 - Crocodile


答案:


你不能。 Heroku设置您应该绑定的PORT变量,并侦听tcp / 80。


28
2018-02-24 21:57



好的....为什么? - Crocodile
那么,在app.js(或启动脚本)中,我对端口使用了什么? var server = http.createServer(sendSMSHandler); server.listen(PORT); - broderickga
@broderickga你可以使用这样的东西:var port = process.env.PORT || 3000; app.listen(port,function(){ - metatron


Heroku像对待任何其他应用程序一样处理Web应用程序,并且不允许您直接分配侦听端口。您的Web服务器将由Heroku分配一个动态端口,但要访问它,您将需要使用默认端口(80)。

在Heroku上,应用程序是完全独立的,不依赖于   运行时将Web服务器注入执行环境中   创建面向Web的服务。每个Web进程只是绑定到一个端口,   并侦听进入该端口的请求。要绑定的端口   由Heroku指定为PORT环境变量。

与Heroku的合同是将进程绑定到要服务的端口   要求。 Heroku的路由器负责指导HTTP   在正确的端口上请求进程。

参考: Heroku运行时原则 - Web服务器


0
2017-07-28 14:23