¿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-inspectorque habla ynode --debugproporciona 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-inspectorluego abrirá un navegador con herramientas de depuración.Editar 28 de febrero de 2014
node-inspectorha agregado el comandonode-debug, que lanza el nodo en un--debugestado y abre el navegador a lanode-inspectorpágina, deteniéndose cuando llega a la primeradebuggerlí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 parataskponer (usarservecomo ejemplo)grunt serveo simplementeserve? Lo he intentadonode-debug Gruntfile.js servey 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 laservetarea incluso si coloco unadebugger;línea como primera línea de la función.grunt.jsguió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 degrunten su comando - en su ejemplo, reemplácelotaskconserveSolución de Windows
correr
de cmd en el directorio con su
Gruntfile.js. No olvide ponerdebugger;línea en los lugares necesarios.fuente
grunt-clipaquete:node --debug-brk [..]\node_modules\grunt-cli\bin\gruntnode --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) tasknamenode-inspectorPara 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 nodeA
#!/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 testalgo así? Me gusta eso.node-inspectorno va a salir y permitirbuildytestpara 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-inspectory luego voy a la URL de localhost y no veo archivos de origen. Solo herramientas de depuración vacías.grunt node-inspectorynode --debug-brk Gruntfile.jsdesde 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) taskNameLo 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-17dfad5db471Abre 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) taskNameSi desea iniciar la tarea grunt en modo de depuración en un puerto específico:
node --inspect-brk=8080 $(which grunt) taskNamesi 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