Heroku process.env.port未定义

时间:2016-08-23 09:11:19

标签: javascript node.js heroku

我正在尝试在heroku上运行node.js应用。我让它在本地工作,但当我在heroku上部署时,我得到以下错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

这是我试图听的端口:

const PORT = process.env.port || 3000;

当我记录process.env.port的内容时,表示process.env.port未定义。

我需要做些什么来自动设置端口吗?

编辑(FIX): 所以我发现了问题所在。 javascript正在被缩小,但是process.env.port被缩小为无效的东西。谢谢你的帮助。

5 个答案:

答案 0 :(得分:3)

你应该在heroku上运行服务器之前传递config args。在终端类型

$ heroku config:set PORT=3333

然后你就能得到像这样的端口号

const PORT = process.env.PORT || 3000;

如果您是从终端分配的

 console.log(PORT) => 3333

否则

console.log(PORT) => 3000

答案 1 :(得分:1)

任何人进入该职位。 首先检查您是否正确编写了process.env.PORT。 我在写.Port,花了我4个小时的时间才能弄清错误

答案 2 :(得分:0)

如果你正在使用babel,请不要在Heroku中使用babel插件 babel-plugin-transform-inline-environment-variables 。 我认为Heroku在进行部署时没有设置PORT变量,这就是为什么你会得到未定义的。

答案 3 :(得分:0)

我遇到了同样的问题,并找到了将heroku dyno端口变量传递给节点启动脚本的解决方案。

如果您在项目的根目录中创建了Procfile,只需打开它即可。

如果尚未创建Procfile,只需转到项目的根目录并创建一个名为“ Procfile”的文件。该文件没有扩展名,它有助于heroku获取应用程序的起点。有关它的更多详细信息:The Procfile

Node.JS Heroku documentation中,没有提供任何示例,看起来像Procfile。

就我而言,我正在使用Typescript,.js文件的输出目录位于项目文件夹中的/ build目录中。我假设您的情况也一样。如果没有,只需放置您的起始文件的目录。

Procfile:

web: PORT=$PORT node ./build/index.js

答案 4 :(得分:0)

只是想把这个留给像我一样困惑的人,你必须使用

process.env.PORT

不是

process.env.$PORT