Resumo : neste tutorial, você aprenderá como ler as variáveis de ambiente usando a process.env
propriedade Node.js do process
módulo.
Introdução ao módulo de processo node.js
O process
é um módulo principal do Node.js. O process
módulo possui a env
propriedade que contém todas as variáveis de ambiente.
Para definir uma variável de ambiente no Windows, você usa o SET
comando. Por exemplo:
SET NODE_ENV=development
Linguagem de código: JavaScript ( javascript )
No macOS ou Linux, você usa o EXPORT
comando:
EXPORT NODE_ENV=development
Linguagem de código: JavaScript ( javascript )
Nesta sintaxe, the NODE_ENV
é uma variável de ambiente com o valor 'development'
.
Para obter acesso no NODE_ENV
Node.js, você usa o process.env
seguinte:
process.env.NODE_ENV
Linguagem de código: JavaScript ( javascript )
Neste exemplo, o proces.env.NODE_ENV
retorna a string 'development'
.
Se NODE_ENV
não estiver definido, process.env.NODE_ENV
retornará undefined
.
A instrução a seguir usa o operador lógico OR para retornar o ambiente Node.js atual ou development
se NODE_ENV
não estiver definido:
const nodeEnv = process.env.NODE_ENV || 'development';
Linguagem de código: JavaScript ( javascript )
É uma boa prática armazenar informações de credenciais, como nome de usuário e senha do banco de dados, nas variáveis de ambiente.
Vamos ver alguns exemplos práticos de uso do process.env
Node.js.
Usando variáveis de ambiente para armazenar informações de credenciais com segurança
O exemplo a seguir mostra como usar o process.env
para acessar o ambiente Node.js atual e carregar a configuração adequadamente.
A estrutura do projeto ficará assim:
├── config
| ├── app.js
| ├── development.js
| └── production.js
├── index.js
└── package.json
Linguagem de código: texto simples ( texto simples )
Primeiro, crie uma nova pasta chamada env
.
Segundo, execute o npm init
comando para inicializar um novo pacote:
npm init --yes
Linguagem de código: JavaScript ( javascript )
Terceiro, crie uma nova pasta chamada config
dentro do diretório raiz do projeto:
mkdir config
Linguagem de código: JavaScript ( javascript )
Quarto, crie três arquivos app.js,
development.js
e production.js
na config
pasta. Armazena development.js
as credenciais do banco de dados no ambiente de desenvolvimento:
module.exports = {
database: {
host: "localhost",
port: 27017,
username: "admin",
password: "Password1",
},
};
Linguagem de código: JavaScript ( javascript )
O production.js
arquivo armazena as mesmas informações que o arquivo development.js
. No entanto, ele usa as variáveis de ambiente:
module.exports = {
database: {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
},
};
Linguagem de código: JavaScript ( javascript )
Você deve definir as variáveis de ambiente DB_HOST
, DB_PORT
, DB_USERNAME
e DB_PASSWORD
na produção.
Observe que se você armazenar as informações confidenciais no production.js
arquivo e enviá-las para um repositório público, você colocará em risco a segurança do aplicativo.
Isso app.js
exigirá production.js
ou development.js
, dependendo do ambiente Node.js atual:
let config;
const nodeEnv = process.env.NODE_ENV || "development";
if (nodeEnv === "devlopment") {
config = require("./development.js");
} else {
config = require("./production.js");
}
module.exports = config;
Linguagem de código: JavaScript ( javascript )
Quinto, carregue as informações de configuração no app.js
arquivo index.js
:
const config = require("./config/app.js");
console.log(config);
Linguagem de código: JavaScript ( javascript )
Usando as variáveis de ambiente para controlar qual código executar
Às vezes, você pode querer executar algum código no ambiente de desenvolvimento, mas não no ambiente de produção.
Por exemplo, talvez você queira mostrar informações de depuração no ambiente de desenvolvimento, mas não no ambiente de produção.
Para fazer isso, você pode usar process.env
para acessar a DEBUG
variável de ambiente. Por exemplo:
Primeiro, crie um novo módulo chamado debug.js
e defina uma função que registre informações somente quando DEBUG
estiver definido:
module.exports = (data, level = "info") => {
if (!process.env.DEBUG) return;
switch (level) {
case "info":
console.info(data);
break;
case "error":
console.error(data);
break;
case "warning":
console.warn(data);
break;
default:
console.log(data);
}
};
Linguagem de código: JavaScript ( javascript )
Segundo, carregue no debug.js
arquivo index.js
:
const debug = require("./debug");
Linguagem de código: JavaScript ( javascript )
Terceiro, mostre algumas informações de depuração ao console:
const debug = require("./debug");
debug("The app is starting....");
Linguagem de código: JavaScript ( javascript )
Se você definir a DEBUG
variável de ambiente como verdadeira, verá a saída.
Resumo
- O
process
é um módulo principal do Node.js. Aprocess.env
propriedade contém todas as variáveis de ambiente. - Armazene informações confidenciais nas variáveis de ambiente e use-as
process.env
para acessá-las.