javascript - protocol - Usar el inspector de nodos con las tareas de Grunt
node-inspector npm (6)
¿Alguien utilizó node-inspector con Grunt para la depuración de aplicaciones? Si no, ¿puedes recomendar una herramienta de depuración para las aplicaciones basadas en Grunt?
Estoy trabajando con nodejs para una aplicación del lado del servidor y tengo a Grunt para usar tareas separadas (esto se debe a que los usuarios pueden ejecutar tareas por separado).
Solución de Windows
correr
node --debug-brk c:/Users/username/AppData/Roaming/npm/node_modules/grunt-cli/bin/grunt taskname
de cmd en el directorio con tu Gruntfile.js
. No te olvides de poner el debugger;
alinear en los lugares necesarios.
Grandes respuestas aquí. En 2017, ahora puedes hacer
node --inspect --debug-brk $(which grunt) taskName
Que imprime algo así como.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471
Abre esa URL en cromo, ¡y listo!
Estoy usando Nodo 7.3.0 y estoy en Mac. Es posible que deba seguir algunos consejos en otras publicaciones para que funcione en Windows.
Hace poco creé el grunt-node-inspector para configurar fácilmente el inspector de nodos con el resto de su flujo de trabajo, consulte: https://github.com/ChrisWren/grunt-node-inspector
Aquí hay una sección de Gruntfile que ilustra cómo se puede depurar una tarea de grunt utilizando grunt-node-inspector, grunt-concurrent y grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile.js#L44-L77
He hecho una tarea para ejecutar mi aplicación y ejecutar node-inspector. Es mucho mejor que la proposición actual, solo tiene que agregar esta tarea en gruntfile:
grunt.registerTask(''debug'', ''My debug task.'', function() {
var done = this.async();
grunt.util.spawn({
cmd: ''node'',
args: [''--debug'', ''app.js''],
opts: {
//cwd: current workin directory
}
},
function (error, result, code) {
if (error) {
grunt.log.write (result);
grunt.fail.fatal(error);
}
done();
});
grunt.log.writeln (''node started'');
grunt.util.spawn({
cmd: ''node-inspector'',
args: [''&''],
opts: {
//cwd: current workin directory
}
},
function (error, result, code) {
if (error) {
grunt.log.write (result);
grunt.fail.fatal(error);
}
done();
});
grunt.log.writeln (''inspector started'');
});
Para depurar, tenemos que modificar el archivo grunt en bin. En mi máquina, grunt está instalado globalmente, así que fui a / usr / local / lib / node_modules / grunt / bin Abrí el archivo y lo modifiqué:
#!/usr/bin/env node
A
#!/usr/bin/env node --debug-brk
--debug-brk se romperá en la primera línea de javascript ejecutado.
Sin embargo, hacer eso solo no es suficiente, ya que no podrás encontrar tu archivo js de tarea ronca en el menú desplegable en el inspector de nodos, por lo que debes modificar el debugger;
que estás interesado en depurar añadiendo debugger;
donde quieres que suceda el punto de inflexión. Ahora puede hacer clic en continuar después del primer descanso, y verá que está debugger;
línea
Bastante kludgy, pero es la única forma que he encontrado hasta ahora.
Para ejecutar grunt en depuración, debe pasar la secuencia de comandos grunt al nodo explícitamente:
node-debug $(which grunt) task
y pon un debugger;
línea en tu tarea. node-inspector
luego abrirá un navegador con herramientas de depuración.
Editar 28 Feb 2014
node-inspector
ha agregado el comando node-debug
, que inicia el nodo en un estado --debug
y abre el navegador a la página del node-inspector
, deteniéndose cuando llega a la primera línea del debugger
o establece un punto de interrupción.
Editar 30 de enero de 2015
En Windows, las cosas son un poco más complicadas. Consulte la respuesta de @ e.gluhotorenko para obtener instrucciones.