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"
const JWT_SECRET = "minha-senha-super-secreta"
✓ Faça assim
const DB_URL = process.env.DATABASE_URL
const JWT_SECRET = process.env.JWT_SECRET
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