← Node.js: JavaScript fuera del navegador

Sesión 17 · Semana 6

Depurar en el servidor

Hoy · Hoja de ruta

  1. 1. Aprende: Cómo se diagnostica un fallo cuando no hay interfaz que mirar.
  2. 2. Haz: Repara un servidor con cinco fallos.
  3. 3. Comprueba: Sabes decir en qué lado está el problema antes de tocar nada.

Antes de empezar · 5 minutos, sin apuntes

  1. Si el navegador muestra un error, ¿cómo sabes si el fallo es del cliente o del servidor?
  2. ¿Qué mira primero: la consola del navegador o la terminal?
  3. ¿Qué información te da el código de estado sobre dónde buscar?

Dos consolas, y hay que mirar la correcta

Localizar el lado del fallo
  1. ¿Sale la petición? Pestaña Network del navegador
  2. ¿Llega al servidor? Tu registro de peticiones
  3. ¿Qué estado devuelve? 4xx es del cliente, 5xx es tuyo
  4. ¿Qué dice la terminal? Ahí está la traza

Ese registro de la sesión 15 deja de ser un adorno: es lo que separa «no llega la petición» de «llega y falla», que es la misma pregunta de la UD4 trasladada al servidor.

El inspector

node --inspect src/servidor.js

Con el servidor arrancado así, puedes conectar DevTools o el depurador de VS Code y poner puntos de interrupción en tu código de servidor: mismo depurador, mismo procedimiento que en la UD3.

Los fallos típicos de un servidor Node

Síntoma Causa habitual
El servidor no arranca, EADDRINUSE Otro proceso tuyo sigue vivo en ese puerto
Todo devuelve 404 El orden de las declaraciones, o la ruta mal escrita
peticion.body es undefined Falta express.json(), o va después de la ruta
La petición se queda colgada Un middleware sin next ni respuesta
«Cabeceras ya enviadas» Se respondió dos veces: falta un return
Los cambios no se aplican El servidor no se ha reiniciado
El módulo del cliente no se ejecuta Tipo de contenido incorrecto en el estático

Reproduce sin navegador

Antes de investigar, repite la petición con tu cliente HTTP. Si desde ahí funciona, el problema está en el cliente y no en el servidor; si falla igual, has eliminado media docena de variables de un golpe.

Tarea 17 · El servidor roto

Recibirás un proyecto con cinco fallos, uno de cada familia de la tabla. Para cada uno:

  1. Escribe el síntoma exacto y qué esperabas.
  2. Di si el fallo es del cliente o del servidor, y cómo lo has sabido.
  3. Formula la hipótesis antes de tocar nada.
  4. Compruébala con el registro, el cliente HTTP o un punto de interrupción.
  5. Corrige con el cambio más pequeño posible.
Objetivo mínimoTres fallos localizados con su hipótesis escrita.
Si lo tienesLos cinco, y una comprobación que hubiera evitado cada uno.
RetoRompe tu propio proyecto de forma sutil y cronometra a un compañero.

Checkpoint · fin de la sesión 17

  • Separas fallos de cliente de fallos de servidor.
  • Usas Network, el registro y la terminal en el orden correcto.
  • Sabes arrancar Node con el inspector.
  • Reproduces sin navegador antes de investigar.