Heroku cedar 堆栈上的 Node.js 端口问题
Posted
技术标签:
【中文标题】Heroku cedar 堆栈上的 Node.js 端口问题【英文标题】:Node.js port issue on Heroku cedar stack 【发布时间】:2011-11-22 03:35:31 【问题描述】:我正在 Node.js 中运行一个基本的 Express 应用程序并尝试部署到 Heroku。该应用程序在本地运行良好,我相信我在 Heroku 上的设置进展顺利,直到启动服务器时出现以下错误:
2011-09-21T16:42:36+00:00 heroku[web.1]: State changed from created to starting
2011-09-21T16:42:39+00:00 app[web.1]: Express server listening on port 3000 in production mode
2011-09-21T16:42:40+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 3000, should be 12810 (see environment variable PORT)
2011-09-21T16:42:40+00:00 heroku[web.1]: Stopping process with SIGKILL
2011-09-21T16:42:40+00:00 heroku[web.1]: Process exited
这是目前我在 app.js 中的全部内容
app.listen(3000);
我也确实按照 Heroku 入门中提到的那样运行过这个。
$ heroku config:add NODE_ENV=production
Adding config vars:
NODE_ENV => production
我相信我只需要设置生产端口?谢谢。
【问题讨论】:
【参考方案1】:您能否显示您调用listen
的整个代码部分?您应该检查进程环境变量 PORT,而不仅仅是将其硬编码为 3000。来自他们的docs:
var port = process.env.PORT || 3000;
app.listen(port, function()
【讨论】:
酷,我更新了帖子。我是否需要以某种方式切换到端口 12810 进行生产?谢谢 啊,好吧。尝试使用我上面显示的逻辑调用listen,看看它是否有效。 这行得通,但process.env.PORT
有什么作用?谁设置的?
Heroku 会:他们在启动 web dyno 时注入配置变量,这是他们注入的变量之一。
我在环境变量中找不到 PORT 变量,需要在 Procfile -p 命令中提及。我该怎么做?以上是关于Heroku cedar 堆栈上的 Node.js 端口问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Heroku Cedar 堆栈上使用 .htaccess 重定向到 HTTPS
从 Heroku Bamboo 堆栈升级到 Cedar 堆栈
如何将heroku cedar-14堆栈应用程序升级到最新的heroku堆栈(即,升级到heroku 18)
Heroku cedar 堆栈中 rack-cache 与 Varnish 的缺点?