Heroku 未使用已定义的 PORT 环境变量

Posted

技术标签:

【中文标题】Heroku 未使用已定义的 PORT 环境变量【英文标题】:Heroku not using defined PORT environment var 【发布时间】:2015-12-25 21:38:32 【问题描述】:

我使用 node.js 和 Heroku 制作了一个小应用程序,设置本地 .env 文件并使用 heroku config:set VARNAME=varValue 定义它应该在本地和远程侦听的端口。

PROD_MONGODB=mongodb://xxxxxxxxx@dxxxxxxxx:12345/server
PORT=3000

我还在 Heroku 上检查了应用程序的仪表板,我可以确认变量设置正确。

这是使用 restify 的服务器启动代码。

app.listen(process.env.PORT, function() 
    console.log('Server listening on port number', process.env.PORT);
);

如果我使用 heroku local 在本地运行应用程序,它会按预期在 3000 端口上运行:

Orion:.......$ heroku local
forego | starting web.1 on port 3000
web.1  | 
web.1  | Server listening on port number 3000

但是当我在 Heroku 上部署应用程序时,我使用了一个看似随机的端口:

2015-09-28T15:15:51.400324+00:00 app[web.1]: Server listening on port number 56680
2015-09-28T15:15:51.486396+00:00 heroku[web.1]: State changed from starting to up

我还能做些什么来确保 Heroku 使用我定义为环境变量的端口?

【问题讨论】:

【参考方案1】:

您没有定义 PORT - Heroku 会自动将其作为环境的一部分提供。

【讨论】:

那部分我没看懂,谢谢。此外,根据这个其他问答,Heroku 分配它想要的任何端口,但该应用程序始终在端口 80 上提供服务。***.com/questions/28706180/… 是的,外部应用程序将在 80(或 HTTPS 的 443)上提供服务。在内部,它将监听分配的PORT

以上是关于Heroku 未使用已定义的 PORT 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Heroku process.env undefined

使用 Express 时未加载 Javascript (Angular)

Laravel 密码重置电子邮件未在 Heroku 上使用 gmail 发送

在 Heroku 中未显示已部署应用程序的图像

Heroku jQuery JavaScript 库未加载 - 404 错误

如何使用环境变量配置 Hibernate