什么是Node.js中的process.env.PORT?

什么是process.env.PORT || 3000 process.env.PORT || 3000用于Node.js? 我看到这个地方:

  app.set('port', process.env.PORT || 3000); 

如果它被用来设置3000作为监听端口,我可以用它来代替吗?

 app.listen(3000); 

如果不是为什么?

在许多环境(例如Heroku)中,作为惯例,您可以设置环境variablesPORT来告诉Web服务器要监听的端口。

所以process.env.PORT || 3000 process.env.PORT || 3000意味着:无论是在环境variables端口,或3000如果什么都没有。

所以你通过app.listenapp.set('port', ...) ,这使得你的服务器能够接受来自环境的参数。

如果您将3000硬编码传递给app.listen() ,那么您总是在端口3000上进行监听,这可能仅适用于您,也可能不监听,具体取决于您的要求以及您运行环境的要求服务器。

  • 如果你运行node index.js ,Node将使用3000

  • 如果运行PORT=4444 node index.js ,Node将使用process.env.PORT ,在本例中等于4444 。 使用sudo运行1024以下的端口。

在另一个服务(如Heroku,Nodejitsu和AWS)上托pipe应用程序时,您的主机可以为您独立configurationprocess.env.PORTvariables; 毕竟,你的脚本运行在他们的环境中。

亚马逊的Elastic Beanstalk可以做到这一点。 如果您尝试设置一个像3000而不是process.env.PORT || 3000的静态端口值 process.env.PORT || 3000其中3000是您的静态设置,那么您的应用程序将导致500网关错误,因为亚马逊正在为您configuration端口。

这是一个将在Amazon的Elastic Beanstalk上部署的最小的Express应用程序:

 var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); // use port 3000 unless there exists a preconfigured port var port = process.env.port || 3000; app.listen(port);