Criar servidor HTTP com Node.js do zero
iniciar seu primeiro projeto em Node.js, entender os principais módulos e aprender os fundamentos para levantar seu servidor HTTP com JavaScript puro.
Por que isso é importante
Criar servidor HTTP Node.js do zero: ESM (`"type":"module"`) + `import http from 'node:http'` → `createServer` → `listen`. Entenda req/res e status codes antes de pular para Express/Fastify.
Leitura relacionada: curso de Node.js · instalação e fundamentos de Node.js · como criar API REST com Node.js · tipos de filas no RabbitMQ · Clean Vertical Sliced Architecture.
Entendendo o Ambiente do Node.js
Node.js roda JavaScript fora do browser com módulos nativos (http, fs, path). Antes do framework: versão LTS (`node -v`), um arquivo server e o ciclo req → res.
Dica
Aproveite os módulos já inclusos no Node.js para acelerar o desenvolvimento sem depender de bibliotecas externas, principalmente nos primeiros projetos.
Criando a Estrutura Inicial do Projeto
Estrutura mínima: pasta do projeto + `package.json` com `"type": "module"` + `server.js` (ou `server.mjs`). Um arquivo basta para o primeiro `listen`.
Atenção
Sempre verifique se o Node.js está instalado corretamente antes de começar. Use o comando node -v para conferir a versão instalada.
Importar módulos: ESM com node: (2026)
Em 2026, importe built-ins com ESM e prefixo `node:` — ex.: `import http from 'node:http'`. `require()` (CommonJS) ainda existe; não misture os dois no mesmo arquivo sem bridge.
Atenção
Utilize sempre os módulos nativos quando possível para garantir máxima performance e facilidade de manutenção.
Caminho ESM-first (pule o CommonJS-first)
Em 2026, comece ESM-first: no package.json use "type": "module" e importe com import http from 'node:http' (prefixo node: deixa explícito que é built-in). Tutorials CommonJS-first (require) ainda funcionam, mas atrasam quem vai misturar com TypeScript/bundlers modernos — não precisamos de guerra de comprimento com DigitalOcean/Alura; só do caminho certo no primeiro arquivo.
ESM
Se o restante do artigo ainda mostra require em screenshots antigos, trate como legado visual — o lab abaixo e projetos novos usam import.
Módulos Essenciais do Node
O Node oferece módulos essenciais que cobrem a maioria das necessidades iniciais do desenvolvimento backend:
Módulo node:http: o núcleo do servidor
`node:http` é o núcleo: `createServer(handler)` recebe `(req, res)`. Dali saem status, headers e body — Express só empacota isso depois.
Utilizando a Função createServer
O coração do servidor Node.js é a função createServer , disponibilizada pelo módulo http. Com ela, você define como o servidor responde às requisições feitas pelo navegador ou qualquer cliente HTTP.
Atenção ao código
Ao usar createServer , lembre-se de definir um handler para lidar com as requisições e enviar respostas adequadas.
Passo a passo: createServer + listen
Dica extra
Ao acessar <em>localhost:3000</em> no navegador, você já verá a resposta enviada pelo seu próprio servidor Node!
Mini lab: GET/POST e status codes
Mini lab (http nativo, sem Express): no handler, leia req.method e req.url.
Quando cansar de switch manual, suba para framework no curso-nodejs — o ponto aqui é status codes e o ciclo request/response.
Como o Navegador se Conecta ao Servidor
Quando seu servidor está em execução, o navegador funciona como um cliente e envia requisições para o endereço local e porta definidos. O Node responde a cada solicitação através do callback cadastrado no createServer , enviando textos, arquivos ou qualquer conteúdo.
Comparando Módulos Nativos e de Terceiros
Módulos Nativos do Node.js
Disponíveis por padrão, sem necessidade de instalação adicional, cobrem a maioria dos cenários iniciais.
Prós
- Velocidade
- Baixo overhead
- Documentação oficial
Contras
- Menos funcionalidades avançadas
- Mais código manual
Módulos de Terceiros (como Express)
Bibliotecas externas podem simplificar tarefas repetitivas e adicionar abstrações prontas.
Prós
- Facilidade de uso
- Funções específicas prontas
- Comunidade ampla
Contras
- Maior dependência externa
- Pode aumentar tamanho do projeto
Erros comuns ao começar no Node.js
Erro típico
Tentar rodar server.js sem Node instalado gerará um erro de comando não encontrado. Instale o Node.js primeiro e reinicie o terminal.
Atenção com portas
Escolher uma porta já usada por outro processo impedirá seu servidor de rodar. Use portas como 3000, 4000 ou maiores para evitar conflitos.
Info
Sempre pare o servidor com Ctrl+C no terminal antes de rodar novamente, evitando múltiplos processos travando a porta.
Próximos passos: frameworks e o curso Node
Após o primeiro servidor online, explore a leitura e escrita de arquivos com fs , experimente gerar hashes com crypto e, depois, avance para frameworks como Express para facilitar rotas e middlewares.
Fontes
Revisão em agosto de 2026. APIs nativas (`http`, `fs`, etc.) seguem a versão do Node instalada — confira LTS atual com `node -v` e a docs oficial. Tutorial introdutório, não guia de produção completo.
<a href="https://nodejs.org/docs/latest/api/http.html">Node.js — HTTP</a>. <a href="https://nodejs.org/docs/latest/api/fs.html">Node.js — File system</a>. <a href="https://nodejs.org/en/download">Node.js — Download / LTS</a>.
Perguntas frequentes
Como criar um servidor HTTP com Node.js?
Importe node:http, use createServer para ler req/res, responda com writeHead/end e chame listen na porta. Depois evolua roteamento e frameworks.
Preciso de Express para um servidor HTTP?
Não no primeiro passo. Aprender o módulo http mostra request/response de verdade; Express/Fastify entram quando o boilerplate de rotas incomoda.
Quais módulos básicos do Node estudar primeiro?
http, fs, path, url e events cobrem o essencial antes de frameworks. Domine require/import e ESM (node:http) no caminho 2026.
Como escutar uma porta com createServer?
Após createServer, chame server.listen(porta, callback). Confirme a porta livre, teste com curl e encerre com Ctrl+C no terminal.