¿Alguien usó el inspector de nodos con Grunt para la depuración de aplicaciones? Si no es así, ¿puede recomendar una herramienta de depuración para aplicaciones basadas en Grunt?
Estoy trabajando con nodejs para una aplicación del lado del servidor y tengo Grunt para usar tareas separadas (esto se debe a que los usuarios pueden ejecutar tareas por separado).
node-inspector
que habla ynode --debug
proporciona la información de depuración a un navegador que se conecta. Esto es increíble, porque luego puede conectar Chrome al proceso del inspector de nodos y usar todas las herramientas del inspector web para depurar su aplicación. github.com/dannycoates/node-inspectorRespuestas:
Para ejecutar grunt en depuración, debe pasar el script grunt al nodo explícitamente:
y ponga una
debugger;
línea en su tarea.node-inspector
luego abrirá un navegador con herramientas de depuración.Editar 28 de febrero de 2014
node-inspector
ha agregado el comandonode-debug
, que lanza el nodo en un--debug
estado y abre el navegador a lanode-inspector
página, deteniéndose cuando llega a la primeradebugger
línea o establece un punto de interrupción.Edición 30 de enero de 2015
En Windows, las cosas son un poco más complicadas. Consulte la respuesta de @ exampleluhotorenko para obtener instrucciones.
fuente
$(which grunt)
es? ¿Es solo el Gruntfile.js lo que quiero depurar? ¿Y paratask
poner (usarserve
como ejemplo)grunt serve
o simplementeserve
? Lo he intentadonode-debug Gruntfile.js serve
y muchas otras cosas, pero no puedo hacer que esto funcione. Node-inspector se abre y se rompe en la primera línea, pero no puedo entrar en laserve
tarea incluso si coloco unadebugger;
línea como primera línea de la función.grunt.js
guión grunt-cli . Ese es el script que realmente ejecuta Grunt. Si está en Windows, consulte stackoverflow.com/a/13443026/240358 (la respuesta a continuación) para ver una posible ubicación del script grunt-cli. Eso toma el lugar degrunt
en su comando - en su ejemplo, reemplácelotask
conserve
Solución de Windows
correr
de cmd en el directorio con su
Gruntfile.js
. No olvide ponerdebugger;
línea en los lugares necesarios.fuente
grunt-cli
paquete:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
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 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á encontrar su archivo js de tarea gruñona en el menú desplegable en el inspector de nodos, por lo que debe modificar el archivo que le interesa depurar agregando
debugger;
where quieres que suceda el punto de ruptura. Ahora puede hacer clic en Continuar después del primer descanso, y saldrá de sudebugger;
línea.Bastante torpe, pero es la única forma que he encontrado hasta ahora.
fuente
Recientemente creé grunt-node-inspector para configurar fácilmente el inspector de nodos con el resto de su flujo de trabajo de grunt, compruébelo: https://github.com/ChrisWren/grunt-node-inspector
Aquí hay una sección de un Gruntfile que ilustra cómo puede depurar una tarea grunt usando grunt-node-inspector, grunt-concurrent y grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile. js # L44-L77
fuente
node --debug-brk $(which grunt) node-inspector build test
algo así? Me gusta eso.node-inspector
no va a salir y permitirbuild
ytest
para funcionar ya que se ejecuta siempre. Agregué un enlace a un fragmento donde lo tengo configurado.node-inspector &
, dejándolo en segundo plano y llamándolo hecho. ¿Alguna idea tuya sobre eso?grunt node-inspector
y luego voy a la URL de localhost y no veo archivos de origen. Solo herramientas de depuración vacías.grunt node-inspector
ynode --debug-brk Gruntfile.js
desde mi directorio gruñido. Sin embargo, cuando establezco un punto de interrupción en el archivo gruñido, simplemente se bloquea con un error de conexión.He realizado una tarea para ejecutar mi aplicación y ejecutar el inspector de nodos. Es mucho mejor que la propuesta actual, solo tiene que agregar esta tarea en gruntfile:
fuente
Grandes respuestas aquí. En 2017, ahora puedes hacer
node --inspect --debug-brk $(which grunt) taskName
Lo que imprime algo 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 Chrome, ¡y listo!
Estoy usando Node 7.3.0 y estoy en Mac. Es posible que deba seguir algunos de los consejos en otras publicaciones para que funcione en Windows.
fuente
Actualización 2019
Si desea iniciar la tarea gruñido en modo de depuración y romper en la primera línea:
node --inspect-brk $(which grunt) taskName
Si desea iniciar la tarea grunt en modo de depuración en un puerto específico:
node --inspect-brk=8080 $(which grunt) taskName
si desea adjuntar VSCODE al proceso de nodo que ejecuta la sesión de depuración de grunt, use la siguiente configuración en vscode:
fuente