我知道 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);