Processo Nodejs.env

Resumo : neste tutorial, você aprenderá como ler as variáveis ​​de ambiente usando a process.envpropriedade Node.js do processmódulo.

Introdução ao módulo de processo node.js

O processé um módulo principal do Node.js. O processmódulo possui a envpropriedade que contém todas as variáveis ​​de ambiente.

Para definir uma variável de ambiente no Windows, você usa o SETcomando. Por exemplo:

SET NODE_ENV=developmentLinguagem de código:  JavaScript  ( javascript )

No macOS ou Linux, você usa o EXPORTcomando:

EXPORT NODE_ENV=developmentLinguagem de código:  JavaScript  ( javascript )

Nesta sintaxe, the NODE_ENVé uma variável de ambiente com o valor 'development'.

Para obter acesso no NODE_ENVNode.js, você usa o process.envseguinte:

process.env.NODE_ENVLinguagem de código:  JavaScript  ( javascript )

Neste exemplo, o proces.env.NODE_ENVretorna a string 'development'.

Se NODE_ENVnão estiver definido, process.env.NODE_ENVretornará undefined.

A instrução a seguir usa o operador lógico OR para retornar o ambiente Node.js atual ou developmentse NODE_ENVnã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.envNode.js.

Usando variáveis ​​de ambiente para armazenar informações de credenciais com segurança

O exemplo a seguir mostra como usar o process.envpara 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.jsonLinguagem de código:  texto simples  ( texto simples )

Primeiro, crie uma nova pasta chamada env.

Segundo, execute o npm initcomando para inicializar um novo pacote:

npm init --yesLinguagem de código:  JavaScript  ( javascript )

Terceiro, crie uma nova pasta chamada configdentro do diretório raiz do projeto:

mkdir configLinguagem de código:  JavaScript  ( javascript )

Quarto, crie três arquivos app.js, development.jse production.jsna configpasta. Armazena development.jsas 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.jsarquivo 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_USERNAMEe DB_PASSWORDna produção.

Observe que se você armazenar as informações confidenciais no production.jsarquivo e enviá-las para um repositório público, você colocará em risco a segurança do aplicativo.

Isso app.jsexigirá production.jsou 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.jsarquivo 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.envpara acessar a DEBUGvariável de ambiente. Por exemplo:

Primeiro, crie um novo módulo chamado debug.jse defina uma função que registre informações somente quando DEBUGestiver 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.jsarquivo 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 DEBUGvariável de ambiente como verdadeira, verá a saída.

Resumo

  • O processé um módulo principal do Node.js. A process.envpropriedade contém todas as variáveis ​​de ambiente.
  • Armazene informações confidenciais nas variáveis ​​de ambiente e use-as process.envpara acessá-las.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *