Cómo llamar a la herramienta de depuración de Node
Los programas JavaScript son cada vez más complejos y la importancia de las herramientas de depuración es cada vez más destacada. Los scripts del cliente tienen navegadores, ¿cómo depurar los scripts de Node?
En 2016, Node decidió utilizar las herramientas de desarrollo del navegador Chrome como herramienta de depuración oficial, de modo que los scripts de Node se puedan depurar mediante una interfaz gráfica, lo que facilita enormemente a los desarrolladores.
Este artículo presentará cómo utilizar la herramienta de depuración del script Node.
I. Programa de muestra
Para facilitar la explicación, a continuación se muestra un script de muestra. Primero, cree un nuevo directorio de trabajo y cámbiese a él.
$ mkdir debug-demo
$ cd debug-demo Luego, genere el archivo package.json e instale el marco Koa y el módulo koa-route.
$ npm init -y
$ npm install --save koa koa-route A continuación, cree un nuevo script app.js y escriba el siguiente contenido.
// app.js
const Koa = require('koa');
const router = require('koa-route'); p>
p>
const app = new Koa();
const main = ctx => {
ctx.body = 'Hola ' + nombre; /p>
};
app.use(router.get('/', principal));
app.use(router.get('/:nombre ', bienvenido)) ;
app.listen(3000);
console.log('escuchando en el puerto 3000');El código anterior es una aplicación web simple que especifica dos rutas y mostrar una línea de texto de bienvenida al acceder. Si desea obtener más información sobre el significado detallado del código, consulte el tutorial de Koa.
Dos: inicie las herramientas de desarrollador
Ahora, ejecute el script anterior.
$ node --inspect app.js En el código anterior, debe usar el parámetro --inspect para habilitar el modo de depuración. En este punto, abra su navegador y visite http://127.0.0.1//3000 para ver Hello World.
A continuación, es hora de comenzar a depurar. Hay dos formas de abrir herramientas de depuración. La primera es escribir chrome://inspect o about:inspect en la barra de direcciones del navegador Chrome y regresar a la siguiente pantalla.
En la sección Objetivos, haga clic en el enlace inspeccionar para acceder a las herramientas de depuración.
La segunda forma de acceder a las herramientas de depuración es abrir la ventana Herramientas de desarrollador en http://127.0.0.1//3000 y hacer clic en el logotipo verde de Nodo en la esquina superior izquierda.
Ventana de la herramienta de depuración
La herramienta de depuración es una versión personalizada de la herramienta de desarrollo, con las partes que no funcionan para los scripts del servidor eliminadas.
Tiene cuatro paneles principales.
Consola: Consola
Memoria: Memoria
Perfilador:
Perfilador: Rendimiento
Fuentes
Estos paneles son básicamente los mismos que el entorno del navegador, por lo que aquí solo presento el panel Fuentes.
Cuatro: Establecer puntos de interrupción
Vaya al panel Fuentes y busque el script en ejecución app.js.
Haga clic en el número de línea en la línea 11 (la línea de abajo) para establecer un punto de interrupción.
ctx.response.body = 'Hola ' + nombre;
En este momento, el navegador ingresa http://127.0.0.1:3000/alice y la página muestra que está esperando que regrese el servidor. Cambie a la herramienta de depuración y podrá ver que el hilo principal del nodo está en pausa.
Al ir al panel de la consola y escribir nombre se devuelve alice, indicando que estamos en el contexto del punto de interrupción.
Vuelva al panel Fuentes y podrá ver Vigilancia, Pila de llamadas, Alcance y Puntos de interrupción contraídos a la derecha. Abra la página Ámbito y podrá ver todas las variables en los ámbitos local y global.
En el ámbito local, el valor del nombre de la variable es alice, así que haga doble clic en él para editarlo y cambiarlo a bob.
Luego haz clic en el botón Continuar en la barra de herramientas superior.
Puedes ver Hola bob en la página.
En la línea de comando, presione ctrl + c para finalizar app.js.
V. Depuración de scripts que no son de servicio
Los scripts de servicios web siempre se ejecutan en segundo plano, pero la mayoría de ellos simplemente procesan tareas y finalizan cuando se completan. En este punto, es posible que ni siquiera tenga tiempo para abrir las herramientas de depuración. Cuando lo abres, el script ya ha terminado de ejecutarse. ¿Cómo depurar en este momento?
$ node --inspect=9229 -e "setTimeout(function() { console.log('yes'); }, 30000)" En el código anterior, --inspect=9229 especifica la depuración El puerto es 9229, que es el puerto predeterminado utilizado por las herramientas de depuración para la comunicación. El parámetro -e especifica una cadena para ejecutar como código.
Visite chrome://inspect para acceder a las herramientas de depuración para depurar este código.
Siempre es inconveniente agregar código en setTimeout. Para scripts de ejecución corta, es posible que no tenga tiempo para activar las herramientas de depuración. He aquí cómo.
$ node --inspect-brk=9229 app.js En el código anterior, --inspect-brk especifica establecer un punto de interrupción en la primera línea. Es decir, una vez que comience a ejecutarse, quedará en pausa.
6. ¿Qué debo hacer si olvido escribir --inspeccionar?
El requisito previo para abrir la herramienta de depuración es utilizar el parámetro --inspect al iniciar el script de Node. Si olvido el parámetro --inspect, ¿aún puedo depurar?
La respuesta es sí. Primero, inicie el script normalmente.
$ node app.js Luego, busque el número de proceso del script anterior en otra ventana de línea de comando.
$ ps ax | grep app.js
30464 pts/11 Sl+ 0:00 nodo app.js
30541 pts/12 S+ 0:00 grep app.js En el comando anterior, el número de proceso de app.js es 30464.
A continuación, ejecute el siguiente comando.
$ node -e 'process._debugProcess(30464)' El comando anterior establece una conexión entre el proceso 30464 y la herramienta de depuración, y luego puede abrir la herramienta de depuración.
Otro método consiste en establecer una conexión de depuración enviando la señal SIGUSR1 al proceso del script.
$ kill -SIGUSR1 30464 Creo que después de leer los ejemplos de este artículo, dominas el método. Para obtener más información interesante, presta atención a otros artículos relacionados en Gxl.com.
Lectura recomendada:
Cómo utilizar el servidor de recursos estáticos de Node
Cómo operar la base de datos con nodejs+mysql