如何在 Heroku 中正确设置节点应用端口号



我知道 Heroku 会自动为您的实例分配一个端口号,当您定义像"3000"这样的特定端口号时不起作用。但是当我尝试更改我的端口号以使用环境变量时(如 Heroku 的文档和一些堆栈溢出答案中建议的那样(,我总是得到

错误 R10(启动超时(> Web 进程在启动后 60 秒内无法绑定到$PORT

该应用程序在本地运行良好,我想知道如何最好地更改我的代码以确保它在 Heroku 上运行:

var express     = require('express'),
app         = express(),
server      = require('http').createServer(app),
io          = require('socket.io').listen(server),
port        = 3000,
// hash object to save clients data,
// { socketid: { clientid, nickname }, socketid: { ... } }
chatClients = new Object();
server.listen(port);

以下是我尝试过的一些链接,等等:

https://devcenter.heroku.com/articles/preparing-a-codebase-for-heroku-deployment(第 4 点(

Heroku + 节点.js错误(Web 进程在启动后 60 秒内无法绑定到$PORT(

https://help.heroku.com/P1AVPANS/why-is-my-node-js-app-crashing-with-an-r10-error

只需从环境变量访问 PORT,如下所示:

var express     = require('express'),
app         = express(),
server      = require('http').createServer(app),
io          = require('socket.io').listen(server),
port        = process.env.PORT || 3000,
// hash object to save clients data,
// { socketid: { clientid, nickname }, socketid: { ... } }
chatClients = new Object();
server.listen(port);

最新更新