Archi's Academy

BLACK FRIDAY

Tüm Kasım boyunca %85 İndirim

whatsapp
İletişime Geç

Software Development

Coding

Como Definir e Usar Variáveis de Ambiente no Node.js: Guia Prático

Colocar credenciais de banco de dados, chaves de API e segredos direto no código é receita para vazamento. Variáveis de ambiente são como aplicações em produção lidam com dados sensíveis com segurança – vamos fazer isso do jeito certo.

Por que Variáveis de Ambiente Importam

Você está construindo uma aplicação em Node.js. Seu código precisa de uma senha de banco de dados, de uma chave de API de um serviço externo e de configurações que mudam entre desenvolvimento e produção.
Você basicamente tem três opções:
  1. Hardcodar tudo no código – senha do banco em config.js, chave de API perdida em um comentário, segredos versionados no git. É assim que sistemas são invadidos. Não faça isso.
  2. Variáveis de ambiente – você mantém dados sensíveis separados do código. Valores diferentes para desenvolvimento, staging e produção. Mais seguro, escalável e padrão de mercado.
  3. Gerenciador de segredos – AWS Secrets Manager, HashiCorp Vault etc. A abordagem corporativa para sistemas grandes.
Para a maioria dos projetos em Node.js e aplicações pequenas/médias, variáveis de ambiente com dotenv é o caminho certo.

O Que São Variáveis de Ambiente, de Verdade

Variáveis de ambiente são valores definidos no sistema operacional que sua aplicação consegue acessar em tempo de execução.
Quando você define algo como:
DB_PASSWORD=supersecret123
API_KEY=abc123xyz789
NODE_ENV=production
Sua aplicação consegue ler esses valores sem que eles apareçam no código-fonte:
const password = process.env.DB_PASSWORD; // "supersecret123"
const apiKey = process.env.API_KEY; // "abc123xyz789"
const env = process.env.NODE_ENV; // "production"
O sistema operacional injeta tudo isso em process.env – um objeto global do Node.js – na hora em que o processo é iniciado.

Por Que Isso é Importante

Segurança: Segredos não aparecem no código nem no histórico do git. Se seu repositório for público, suas credenciais não ficam expostas.
Configuração: Ambientes diferentes (desenvolvimento, homologação, produção) podem ter valores diferentes sem precisar alterar uma linha de código.
Flexibilidade de deploy: Você faz deploy do mesmo código em servidores diferentes – cada ambiente tem suas próprias variáveis de ambiente, e a aplicação se adapta automaticamente.

O Problema: Configurar Tudo na Mão é Chato

Configurar variáveis de ambiente manualmente para cada desenvolvedor e para cada ambiente de deploy é cansativo.
No macOS/Linux:
export DB_HOST=localhost
export DB_PASSWORD=mypassword
export API_KEY=key123
No Windows (PowerShell):
$env:DB_HOST="localhost"
$env:DB_PASSWORD="mypassword"
$env:API_KEY="key123"
Cada pessoa do time tem que repetir esse processo. Cada pipeline de CI/CD também. É fácil errar, esquecer uma variável ou usar o valor errado.
É aqui que entra o dotenv.

Usando Dotenv: o Jeito Simples

Dotenv é uma biblioteca para Node.js que carrega variáveis de ambiente a partir de um arquivo .env direto para process.env.

Passo 1: Instale o Dotenv

npm install dotenv
ou com Yarn:
yarn add dotenv

Passo 2: Crie um Arquivo .env

Crie um arquivo .env na raiz do projeto:
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=mysecurepassword
API_KEY=abc123xyz789
NODE_ENV=development
JWT_SECRET=your-jwt-secret-key
LOG_LEVEL=info

Passo 3: Carregue as Variáveis no Seu App

No começo da sua aplicação (antes de qualquer código que use essas variáveis), faça o require e configure o dotenv:
// app.js ou server.js – PRIMEIRA LINHA
require('dotenv').config();


// AGORA você pode usar process.env
const express = require('express');
const app = express();


const dbHost = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
const apiKey = process.env.API_KEY;


console.log(`Conectando no banco em ${dbHost}:${dbPort}`);
app.listen(3000);
Crítico: Chame require('dotenv').config() antes de qualquer outro require que dependa de variáveis de ambiente.

Passo 4: Adicione .env ao .gitignore

NUNCA faça commit do .env no git. Seus segredos vão parar no repositório.
# .gitignore
.env
.env.local
.env.*.local

Passo 5: Compartilhe um Template (Sem Segredos)

Crie um .env.example com as mesmas chaves, mas com valores de exemplo:
# .env.example – É este que vai pro repositório
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=change_me
API_KEY=change_me
NODE_ENV=development
JWT_SECRET=change_me
LOG_LEVEL=info
Outros desenvolvedores copiam esse arquivo e preenchem os valores reais localmente:
cp .env.example .env
# Depois edite o .env com os valores reais

Exemplo Prático: API em Express com Variáveis de Ambiente

Um exemplo simples usando Express.js:
// server.js
require('dotenv').config();


const express = require('express');
const postgres = require('pg');


const app = express();


// Lê configurações a partir das variáveis
const config = {
  db: {
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
  },
  api: {
    port: process.env.PORT || 3000,
    apiKey: process.env.API_KEY,
    jwtSecret: process.env.JWT_SECRET
  },
  env: process.env.NODE_ENV || 'development'
};


// Valida variáveis obrigatórias
if (!config.api.apiKey) {
  throw new Error('A variável de ambiente API_KEY é obrigatória');
}


// Conecta no banco
const pool = new postgres.Pool(config.db);


// Rotas
app.get('/api/users', (req, res) => {
  const authHeader = req.headers.authorization;
  const token = authHeader?.split(' ');[1]


  // Verifica token usando JWT_SECRET
  if (!token) {
    return res.status(401).json({ error: 'Unauthorized' });
  }


  // Consulta o banco com o pool de conexões
  pool.query('SELECT * FROM users', (err, result) => {
    if (err) throw err;
    res.json(result.rows);
  });
});


// Sobe o servidor
const port = config.api.port;
app.listen(port, () => {
  console.log(`Servidor rodando na porta ${port} em modo ${config.env}`);
});
Com essa configuração:
  • Credenciais de banco vêm do .env
  • Chaves de API e segredos são variáveis de ambiente
  • O mesmo código roda em dev, staging e produção com .env diferentes
  • Nada sensível vai parar no seu repositório git

Boas Práticas para Variáveis de Ambiente

1. Valide Variáveis Obrigatórias na Inicialização

Não espere dar erro de conexão para descobrir que DB_PASSWORD não foi definida.
require('dotenv').config();


const required = ['DB_HOST', 'DB_USER', 'DB_PASSWORD', 'API_KEY'];
const missing = required.filter(key => !process.env[key]);


if (missing.length > 0) {
  throw new Error(`Faltam variáveis de ambiente obrigatórias: ${missing.join(', ')}`);
}

2. Use um Objeto de Configuração

Em vez de espalhar process.env.XYZ por todo o código, centralize em um módulo de config:
// config.js
require('dotenv').config();


module.exports = {
  database: {
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD
  },
  api: {
    key: process.env.API_KEY,
    jwtSecret: process.env.JWT_SECRET
  },
  app: {
    port: process.env.PORT || 3000,
    environment: process.env.NODE_ENV || 'development'
  }
};


// Uso
const config = require('./config');
console.log(config.database.host);

3. Use .env Diferentes para Cada Ambiente

.env           # padrão / desenvolvimento
.env.production # overrides para produção
.env.test      # ambiente de testes
Carregue o arquivo certo:
const envFile = process.env.NODE_ENV === 'production'
  ? '.env.production'
  : '.env';

require('dotenv').config({ path: envFile });

4. Agrupe Variáveis com Prefixos

Use prefixos para organizar melhor suas configs:
# Banco
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin


# Redis
REDIS_HOST=localhost
REDIS_PORT=6379


# Serviços externos
STRIPE_API_KEY=sk_...
SENDGRID_API_KEY=SG_...

5. Documente o Que Cada Variável Faz

No .env.example, comente cada campo:
# Conexão com banco PostgreSQL
DB_HOST=localhost      # Host do banco
DB_PORT=5432           # Porta do banco
DB_USER=admin          # Usuário
DB_PASSWORD=change_me  # Senha


# Configuração de APIs
API_KEY=change_me      # Chave de API de serviço externo
JWT_SECRET=change_me   # Segredo para assinar JWTs


# Aplicação
PORT=3000              # Porta do servidor Express
NODE_ENV=development   # Ambiente (development/staging/production)

Alternativas ao Dotenv em Produção

Para desenvolvimento e projetos menores, dotenv funciona muito bem. Para aplicações grandes e produção, considere:

AWS Secrets Manager

Armazene segredos na AWS e recupere em tempo de execução. Mais seguro em ambientes cloud.

HashiCorp Vault

Gerenciamento de segredos em nível enterprise, com rotação, auditoria e controle fino de acesso.

Variáveis no CI/CD

GitHub Actions, GitLab CI, CircleCI etc. permitem definir variáveis de ambiente diretamente no pipeline. Não há necessidade de .env no servidor.

Kubernetes Secrets

Em clusters Kubernetes, use Secrets e ConfigMaps para gerenciar configuração e segredos.
Para aprendizado e desenvolvimento com Node.js, especialmente em cursos como os da Archi’s Academy, o padrão recomendado é começar com dotenv.

Aprendendo Node.js de Verdade

Variáveis de ambiente são só uma parte do quebra-cabeça de uma API Node.js pronta para produção. Saber configurar, fazer deploy e operar sua aplicação é o que diferencia quem “só escreve código” de quem realmente entrega sistemas.
Na Archi's Academy, o Backend Development track mostra não só como escrever código em Node.js, mas como configurar, fazer deploy e escalar suas APIs em ambientes reais.
Learn by Doing. Prove by Doing. Get Hired.
Screenshot from 2026-07-20 13-02-05.png

Resumo: Segredos Devem Ficar Fora do Código

Hardcodar segredos diretamente no código é um risco de segurança enorme. Variáveis de ambiente são o padrão de mercado para gerenciar configuração sensível. Se você domina esse padrão cedo, reduz drasticamente a chance de vazar credenciais.
Comece com dotenv em desenvolvimento. Entenda o fluxo. Depois, evolua para gerenciadores de segredos conforme sua aplicação cresce.

Tem dúvidas sobre variáveis de ambiente, configuração em Node.js ou boas práticas de backend? A equipe da Archi's Academy está pronta para ajudar – fale com a gente quando quiser.
archis-trainee

Abanseka Sylvester

Pazartesi, Tem 20, 2026