AULA 49 MÓDULO 6 backend Node.js ⏱ 45 min

Variáveis de Ambiente

12-Factor App fator 3. dotenv. .env vs .env.example. Validar variáveis obrigatórias na inicialização.

dotenvprocess.envvariáveis de ambiente12-Factorgitignorefail fast

Variáveis de Ambiente

Configurações que mudam entre ambientes (dev, staging, prod) — senhas, URLs de banco, chaves de API — devem ser variáveis de ambiente, nunca hardcoded no código.

🔐
12-Factor App
O fator 3 do 12-Factor App: "Armazene configurações no ambiente". Código idêntico em todos os ambientes; só as variáveis mudam. Permite deploy sem alterar código.
✗ NÃO faça isso
const DB_URL = "postgres://admin:senha123@prod-db.example.com/app"
const JWT_SECRET = "minha-senha-super-secreta"
✓ Faça assim
const DB_URL = process.env.DATABASE_URL
const JWT_SECRET = process.env.JWT_SECRET

dotenv e validação

dotenv carrega um arquivo .env para process.env em desenvolvimento. O .env nunca é commitado — só o .env.example com variáveis sem valor.

validação na inicialização
Valide todas as variáveis obrigatórias ao iniciar o servidor. Se uma estiver faltando, falhe rápido com mensagem clara — melhor que falhar em runtime com um erro obscuro.
javascript
// config/env.js — validar variáveis na inicialização
const dotenv = require('dotenv')
dotenv.config()  // carrega .env

const required = ['DATABASE_URL', 'JWT_SECRET', 'PORT']
const missing  = required.filter(k => !process.env[k])

if (missing.length) {
  console.error('Variáveis de ambiente faltando:', missing.join(', '))
  process.exit(1)  // falha rápida e clara
}

const config = {
  port:        Number(process.env.PORT) || 3000,
  dbUrl:       process.env.DATABASE_URL,
  jwtSecret:   process.env.JWT_SECRET,
  nodeEnv:     process.env.NODE_ENV || 'development',
  isDev:       process.env.NODE_ENV !== 'production',
}

module.exports = config

// .env.example (commitado no git)
// DATABASE_URL=postgres://user:pass@host:5432/db
// JWT_SECRET=
// PORT=3000
// NODE_ENV=development

// .env (no .gitignore — nunca commitado!)
// DATABASE_URL=postgres://admin:senha@localhost:5432/devdb
quiz · aula 49
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Por que variáveis de ambiente nunca devem estar no código?
QUESTÃO 02
Qual arquivo é commitado no git para documentar as variáveis necessárias?
QUESTÃO 03
Por que validar variáveis na inicialização?
0/3