use*_*r-S 150 port node.js express
process.env.PORT || 3000在Node.js中使用什么?我在某个地方看到了这个:
app.set('port', process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)
如果它用于设置3000为侦听端口,我可以使用它吗?
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
如果不是为什么?
Nit*_*ked 205
在许多环境(例如Heroku)中,作为约定,您可以设置环境变量PORT以告知Web服务器要侦听的端口.
所以process.env.PORT || 3000意味着:环境变量PORT中的任何内容,如果没有任何内容,则为3000.
所以你传递它app.listen,或者传递给它app.set('port', ...),这使你的服务器能够从环境中接受一个要监听的端口的参数.
如果您通过3000硬编码app.listen(),您总是在侦听端口3000,这可能只适合您,具体取决于您的要求以及运行服务器的环境要求.
Abd*_*UMI 62
如果你运行node index.js,Node将使用3000
如果您运行PORT=4444 node index.js,Node将在此示例中使用process.env.PORT等于4444.sudo对于低于1024的端口运行.
Thi*_*ark 28
在其他服务(如Heroku,Nodejitsu和AWS)上托管您的应用程序时,您的主机可以process.env.PORT为您独立配置变量; 毕竟,您的脚本在他们的环境中运行.
亚马逊的Elastic Beanstalk就是这样做的.如果您尝试设置静态端口值3000而不是process.env.PORT || 3000静态设置3000,那么您的应用程序将导致500网关错误,因为Amazon正在为您配置端口.
这是一个将在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);
Run Code Online (Sandbox Code Playgroud)
在某些情况下,port只能由环境指定,并保存在用户环境变量中。以下是node.js应用如何使用它。
该process对象是全局的,提供有关当前Node.js进程的信息并对其进行控制。全局而言,它始终可用于Node.js应用程序,而无需使用require()。
该process.env属性返回一个包含用户环境的对象。
该对象的示例如下所示:
{
TERM: 'xterm-256color',
SHELL: '/usr/local/bin/bash',
USER: 'maciej',
PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
PWD: '/Users/maciej',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/Users/maciej',
LOGNAME: 'maciej',
_: '/usr/local/bin/node'
}
Run Code Online (Sandbox Code Playgroud)
例如,
terminal:设置一个新的用户环境变量,不是永久的
export MY_TEST_PORT=9999
Run Code Online (Sandbox Code Playgroud)
app.js:从节点应用程序读取新的环境变量
console.log(process.env.MY_TEST_PORT)
Run Code Online (Sandbox Code Playgroud)
终端:运行节点应用程序并获取值
$ node app.js
9999
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148967 次 |
| 最近记录: |