How to properly set the node app port number in Heroku
我知道Heroku会自动为您的实例分配一个端口号,并且在您定义一个特定的端口(例如" 3000")时不起作用。但是,当我尝试更改端口号以使用环境变量时(如Heroku文档中所建议的以及一些堆栈溢出答案),我总是得到
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
该应用程序在本地可完美运行,我想知道如何最好地更改我的代码以确保其在Heroku上可运行:
1 2 3 4 5 6 7 8 9 10 11 | 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 node.js错误(Web进程在启动后60秒内未能绑定到$ PORT)
https://help.heroku.com/P1AVPANS/why-is-my-node-js-app-crashing-with-an-r10-error
只需从环境变量访问PORT,如下所示:
1 2 3 4 5 6 7 8 9 10 11 | 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); |