Heroku没有使用定义的PORT环境var

时间:2015-09-28 15:21:01

标签: node.js heroku restify

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

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

我还检查了Heroku上应用的信息中心,我可以确认vars设置正确。

这是使用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 个答案:

答案 0 :(得分:3)

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