Do you want to switch to Platzi in English?
10

Depurando aplicaciones de Node.js v8.0.0

20659Puntos

hace un año

Uno de los múltiples cambios de la versión 8.0.0 de Node.js es que ahora node-inspector viene incluido directamente en Node.js.

Vamos a ver cómo podemos usar esta nueva funcionalidad para depurar nuestras aplicaciones fácilmente.

Iniciando el proyecto

Los primero que vamos a hacer es iniciar un proyecto de Node.js con el siguiente comando:

npm init --yes

Esto nos va a devolver un package.json similar a este:

{
	"name": "node-test",
	"version": "1.0.0",
	"description": "",
	"main": "index.js",
	"scripts": {
		"test": "echo \"Error: no test specified\" && exit 1"
	},
	"keywords": [],
	"author": "",
	"license": "ISC"
}

A vamos a modificar los scripts para tener los siguientes:

{
	"scripts": {
		"dev": "node --inspect .",
		"start": "node ."
	}
}

En desarrollo vamos a iniciar nuestra aplicación con npm run dev o con yarn dev. Luego en producción podemos usar npm start o yarn start como siempre. 😃

El código

Vamos a hacer algo súper simple para este ejemplo. Vamos a crear un index.js que inicie un servidor HTTP que devuelve la fecha actual del servidor.

const { createServer } = require('http');

createServer((req, res) => {
	debugger;
	res.end(Date());
}).listen(3000);

Este es nuestro servidor, super simple, lo importante acá es el debugger. Si corremos la aplicación con npm start o yarn start entonces va a funcionar normal y va a ignorar el debugger. Pero lo importante es que si corremos yarn dev o npm run dev nos va a mostrar algo así en la consola:

$ node --inspect . 
Debugger listening on ws://127.0.0.1:9229/a64288c4-972c-45b4-b83e-08330245c336
For help see https://nodejs.org/en/docs/inspector

Si entramos a nuestro localhost:3000 vamos a ver la fecha que nos devuelve el servidor. Hasta ahí todo normal, pero si accedemos a chrome://inspect/ desde nuestro navegador Chrome vamos a ver que aparece un Remote Target que podemos inspeccionar.

node inspector remote target

Si le damos click a inspect nos va a abrir las herramientas de desarrollo de Chrome conectadas a nuestro proceso de Node.js. Si ahora recargamos la página debería entonces pararse el proceso en el debugger que colocamos y dejarnos inspeccionar el contenido de req y res.

Chrome Developer Tools inspeccionando un proceso de Node.js

Ahí podemos inspeccionar nuestros procesos. Si son más complejos podemos colocar más de un debugger e ir saltando entre ellos y luego decirle que continúe hasta que al final devuelve la respuesta del servidor al navegador.

Palabras finales

Como vemos es muy fácil usar este inspector y las herramientas de desarrollo de Chrome al trabajar en aplicaciones de Node.js y al venir integrado con Node.js nos evita configurar herramientas externas y nos asegura de que va a funcionar sin problemas en cualquier tipo de aplicación de Node.js.

Sergio Daniel
Sergio Daniel
@sergiodxa

20659Puntos

hace un año

Todas sus entradas
Escribe tu comentario
+ 2
0
277Puntos
node--inspect .

Automáticamente corre index.js?

2
20659Puntos
un año

Al colocar el . se usa el archivo indicado en la propiedad main del package.json. Sin importar el nombre o la ruta.

0
19Puntos

Espero que también se pueda con Firefox, es mi navegador de cabecera, el viejo confiable

1
20659Puntos
un año

Al igual node-inspector usa las devtools de chrome, de hecho está siendo desarrollado por el equipo de V8/Chromium por lo que dudo que funcione en Firefox.