Answers:
当将应用程序托管在其他服务(例如Heroku,Nodejitsu和AWS)上时,主机可以process.env.PORT
为您独立配置变量;毕竟,您的脚本在其环境中运行。
亚马逊的Elastic Beanstalk可以做到这一点。如果您尝试将静态端口值设置为3000
而不是process.env.PORT || 3000
静态设置值3000,则您的应用程序将导致500网关错误,因为Amazon为您配置了端口。
这是一个最小的Express应用程序,它将部署在Amazon的Elastic Beanstalk上:
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);
const {PORT = 3000} = process.env
在某些情况下,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'
}
例如,
terminal:设置一个新的用户环境变量,不是永久的
export MY_TEST_PORT=9999
app.js:从节点应用程序读取新的环境变量
console.log(process.env.MY_TEST_PORT)
终端:运行节点应用程序并获取值
$ node app.js
9999