Javascript Heroku process.env.port未定义

Javascript Heroku process.env.port未定义,javascript,node.js,heroku,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.po

我正在尝试在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未定义

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

编辑(修复):
所以我找到了问题所在。javascript正在缩小,但是process.env.port被缩小到无法工作的地方。谢谢您的帮助。

在heroku上运行服务器之前,您应该先传递配置参数。终端类型

$ heroku config:set PORT=3333
然后你就可以得到这样的端口号

const PORT = process.env.PORT || 3000;
如果您是从终端分配的

 console.log(PORT) => 3333
否则

console.log(PORT) => 3000

如果您使用的是babel,请不要在Heroku中使用babel插件转换内联环境变量。
我认为Heroku在进行部署时没有设置端口变量,所以这就是为什么会未定义的原因。

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

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

若您还并没有创建Procfile,那个么只需转到项目的根目录并创建一个名为“Procfile”的文件。该文件没有扩展名,它有助于heroku获得应用程序的起始点。详情如下:

在中,没有提供任何示例来说明Procfile的外观

在我的例子中,我使用的是Typescript,我的.js文件输出目录位于项目文件夹的/build目录中。我假设你也有同样的情况。如果没有,只需将启动程序文件的目录放入即可

程序文件:

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

任何人都可以去那个岗位。 首先检查您是否正确写入
process.env.PORT

我当时正在写
.Port
,花了4个小时才找出错误

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

process.env.PORT

不是


process.env.PORT

我认为它应该是
process.env.PORT
@我用大写端口试过,但没有任何变化。所以看起来好像
$PORT
变量没有定义。@是的,这就是问题所在,但我不知道如何定义它。我的老问题,但因为它有一些观点,我应该解释发生了什么。我当时运行的吞咽或网页包意外地剥离了一些变量。所以@3чччы所说的是正确的方法。不,要使用process.env.PORT,您应该自己定义它,如果它是自动定义的,那么就没有理由使用| |运算符,因为process.env.PORT永远不会出错。我已经按照您所说的做了,现在我有了一个配置变量3333。当我记录process.env.PORT时,仍然会得到“未定义”的任何我忘记的内容?$heroku config。运行此命令,它将显示分配的所有变量。如果没有端口:3333,则您拼错了某些内容。请查看heroku文档,然后设置您的服务器配置变量NPM_Config_PRODUCTION:false PORT:3333这些是我提出的配置变量问题,但因为它有一些视图,我应该解释发生了什么。我当时运行的吞咽或网页包意外地剥离了一些变量。所以@donquixote所说的是正确的方式。我花了一整天的时间试图找出问题所在。。。大写端口和固定端口。非常感谢。我想我也有同样的问题。但是,我在我的项目根目录中添加了一个
procfile
,它位于
package.json
文件旁边,包含您指定的内容,但指向我的主捆绑js文件(
dist/main.bundle.js
)。这仍然不起作用-当我在main.(ts)js中记录process.env时,我只得到`process env:{}`请将其添加到注释中。我没有足够的rep。