Meteor: Depurar en el lado del servidor

¿Alguien sabe un buen método para depurar el código del lado del servidor? Intenté habilitar la depuración de Node.js y luego uso el nodo-inspector pero no muestra ninguno de mi código.

Termino usando console.log pero esto es muy ineficiente.

Actualización: encontré que el siguiente procedimiento funciona en mi máquina Linux:

  1. Cuando ejecutas Meteor, generará dos procesos

    process1: / usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js

    process2: / usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js –keepalive

  2. Debes enviar kill -s USR1 en process2

  3. Ejecuta el inspector de nodos y puedes ver el código de tu servidor

En mi primer bash, modifico la última línea del script de arranque del meteor en / usr / lib / meteor / bin / meteoro para

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@" 

y ejecute NODE_DEBUG=--debug meteor en el símbolo del sistema. Esto solo pone –debug flag en process1 así que solo veo los archivos de meteors en node-inspector y no pude encontrar mi código.

¿Alguien puede verificar esto en una máquina con Windows y Mac?

En Meteor 0.5.4 esto se ha vuelto mucho más fácil:

Primero ejecute los siguientes comandos desde la terminal:

 npm install -g node-inspector node-inspector & export NODE_OPTIONS='--debug-brk' meteor 

Y luego abra http://localhost:8080 en su navegador para ver la consola del inspector de nodos.

Actualizar

Desde Meteor 1.0 puedes simplemente escribir

 meteor debug 

que es esencialmente un atajo para los comandos anteriores, y luego ejecuta el inspector de nodos en tu navegador como se mencionó.

Actualizar

En Meteor 1.0.2 se ha agregado una consola o shell. Puede ser útil para generar variables y ejecutar comandos en el servidor:

 meteor shell 

Las aplicaciones Meteor son aplicaciones Node.js. Al ejecutar una aplicación Meteor con el comando meteor [run] , puede configurar la variable de entorno NODE_OPTIONS para iniciar el node en modo de depuración .

Ejemplos de valores de variables de entorno NODE_OPTIONS :

  • --debug
  • --debug=47977 – especifica un puerto
  • --debug-brk – rompe en la primera statement
  • --debug-brk=5858 – especifica un puerto y rompe en la primera instrucción

Si export NODE_OPTIONS=--debug , todos los comandos de meteor ejecutados desde el mismo shell heredarán la variable de entorno. Alternativamente, puede habilitar la depuración solo para una ejecución, con NODE_OPTIONS="--debug=47977" meteor .

Para depurar, ejecute node-inspector en un shell diferente, luego vaya a http://localhost:8080/debug?port= , independientemente de qué node-inspector le indique que ejecute.

Para iniciar node.js en modo de depuración, lo hice de esta manera:

  1. abra /usr/lib/meteor/app/meteor/run.js
  2. antes de

     nodeOptions.push(path.join(options.bundlePath, 'main.js')); 

    añadir

     nodeOptions.push('--debug'); 

Aquí hay pasos prácticos adicionales para que pueda adjuntar un eclipse de depuración:

  1. use ‘–debug-brk’ en lugar de ‘–debug’ aquí, porque es más fácil para mí adjuntar node.js usando eclipse como depurador.
  2. agregar ‘depurador’; en el código donde quieres depurar. (Prefiero esta manera personalmente)
  3. ejecutar meteoro en la consola
  4. adjuntar a node.js en eclipse (herramientas V8, adjuntar a localhost: 5858)
  5. ejecutar, esperar a que el depurador sea golpeado

cuando comienzas meteor en tu carpeta de aplicaciones de meteors, verás que el ” depurador está escuchando en el puerto 5858 ” en la consola.

En Meteor 1.0.3.1 (actualización de la respuesta de Sergey.Simonchik)

Comience su servidor con meteor run --debug-port=

Dirige el navegador a http://localhost:6222/debug?port=

Donde es un puerto que especifique.

En su código, agregue un debugger; donde quieres establecer tu punto de quiebre

Dependiendo de dónde debugger; se invoca, se romperá en la ventana del navegador de su cliente o servidor con el inspector abierto.

Me gusta establecer puntos de interrupción a través de una GUI. De esta forma, no tengo que acordarme de eliminar ningún código de depuración de mi aplicación.

Así es como me las arreglé para hacerlo desde el servidor para mi aplicación local de meteors:

 meteor debug 

inicia tu aplicación de esta manera.

Abre Chrome en la dirección que te da. ¿PUEDE necesitar instalar https://github.com/node-inspector/node-inspector (podría estar incluido con Meteor ahora? No estoy seguro)

Verás un extraño código meteorológico interno (no el código de la aplicación que escribiste). Presione play para ejecutar el código. Este código simplemente inicia su servidor para escuchar las conexiones.

Solo después de presionar Reproducir verá un nuevo directorio en la estructura de la carpeta del depurador llamado “aplicación” . Ahí están tus archivos de proyectos de meteors. Establezca un punto de interrupción allí en la línea que desee.

Abra la dirección local de su aplicación . Esto ejecutará su código del lado del servidor y usted debería poder alcanzar su punto de quiebre.

Nota: ¡tiene que volver a abrir el inspector y continuar con este proceso cada vez que se reinicie su aplicación!

A partir de Meteor 1.0.2, probablemente la mejor forma de depurar el lado del servidor sea directamente a través del nuevo intérprete incorporado: con el servidor en ejecución, ejecute el meteor shell . Más información aquí: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell

No estoy seguro de por qué no estaba funcionando para usted.
Puedo usarlo siguiendo los pasos en la consola (Mac).

 $ ps $ kill -s USR1 *meteor_node_process_id* $ node-inspector & 

Los pasos anteriores se mencionan en https://github.com/dannycoates/node-inspector . Es para conectar el inspector de nodos al proceso de nodo en ejecución.

Escribí un pequeño paquete de meteors llamado meteor-inspector que simplifica el uso del inspector de nodos para depurar aplicaciones meteorológicas. Maneja internamente el ciclo de vida del inspector de nodos y, por lo tanto, el usuario no necesita reiniciar el depurador manualmente después de que algunos archivos hayan cambiado.

Para obtener más detalles y las instrucciones de uso concretas, consulte https://github.com/broth-eu/meteor-inspector .

para el meteoro 1.3.5.2, ejecuta

depuración de meteoros –debug-port 5858 + n n es un número distinto de cero, esto hará que el inspector de nodos use 8080 + n como puerto web.

WebStorm , el potente IDE gratuito para desarrolladores de código abierto, hace que sea mucho más fácil depurar el servidor.

Lo probé en Windows, y la configuración fue sencilla: ver mi respuesta .

Un inspector que resuelve mis problemas es la consola del servidor de meteors. Este es el proceso que seguí para instalarlo:

  1. En la carpeta del proyecto, agregue el paquete inteligente server-eval :

     mrt add server-eval 

    Para Meteor 1.0:

     meteor add gandev:server-eval 
  2. Reiniciar meteoro

  3. Descarga crx archivo de extensión crx Chrome desde aquí .
  4. Abra la página de extensiones en Chrome y arrastre crx archivo crx a la página de extensiones.
  5. Reinicia Chrome.
  6. Verifique el inspector web para evaluar el código del lado del servidor:

    enter image description here

En comparación con el inspector de nodos, tengo una salida más clara.

Si prefiere usar el depurador oficial de nodeJS, puede llamar a NODE_OPTIONS='--debug' meteor y luego (en un shell diferente) node debug localhost:5858 .