Node.js中使用的process.env.PORT || 3000
是什么?我在某个地方看到了这个:
app.set('port', process.env.PORT || 3000);
如果它用于将3000
设置为侦听端口,我可以使用它吗?
app.listen(3000);
如果不是为什么?
答案 0 :(得分:189)
在许多环境(例如Heroku)中,作为惯例,您可以设置环境变量PORT
以告知您的Web服务器要侦听的端口。
所以process.env.PORT || 3000
表示:环境变量PORT中的任何内容,如果没有任何内容,则为3000。
所以你传递了app.listen
或app.set('port', ...)
,这使你的服务器能够从环境中接受一个要监听的端口的参数。
如果您将3000
硬编码传递给app.listen()
,那么您总是在侦听端口3000,这可能只适合您,具体取决于您的要求和环境要求你正在运行你的服务器。
答案 1 :(得分:58)
如果您运行node index.js
,则节点将使用3000
如果您运行PORT=4444 node index.js
,则此示例中的节点将使用等于process.env.PORT
的{{1}}。使用4444
运行1024以下的端口。
答案 2 :(得分:26)
在其他服务(如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);
答案 3 :(得分:4)
在某些情况下,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'
}
例如,
终端:设置一个新的用户环境变量,而不是永久设置
export MY_TEST_PORT=9999
app.js :从节点应用中读取新的环境变量
console.log(process.env.MY_TEST_PORT)
终端:运行节点应用并获取值
$ node app.js
9999
答案 4 :(得分:0)
是什么 Node会在运行时注入process.env全局变量,以供您的应用程序使用,它代表应用程序启动时所处系统环境的状态。例如,如果系统设置了PATH变量,则可以通过process.env.PATH对其进行访问,您可以使用它来检查二进制文件的位置,并在需要时对其进行外部调用。
答案 5 :(得分:0)
const readGlucose = (id, serviceUUID, charasteristicUUID) => {
BleManager.read(id, serviceUUID, charasteristicUUID)
.then(res => {
console.log('read response', res); // [229, 7, 7, 27, 12, 19, 0]
if (res) {
const buffer = Buffer.from(res);
const data = buffer.toString();
console.log('data', data); // �♀‼
}
})
.catch(error => {
console.log('read err', error);
});
是一个零依赖模块,可将 .env 文件 中的环境变量加载到 process.env。 将配置存储在与代码分开的环境中基于十二要素应用方法论。
npm 安装 dotenv
纱线添加 dotenv
使用
尽早在您的应用程序中要求并配置 dotenv。
<块引用>require('dotenv').config()
首先在文件资源管理器中创建一个 .env 文件并在其中写入:
端口:8080
Dotenv