什么是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.listen
或app.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.PORT
variables; 毕竟,你的脚本运行在他们的环境中。
亚马逊的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);