debugging - usar - Meteor: Depurar en el lado del servidor
no se puede conectar con el servidor web iis express (12)
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
¿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:
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
Debes enviar kill -s USR1 en process2
Ejecuta el inspector de nodos y puedes ver el código de tu servidor
En mi primer intento, modifico la última línea del script de arranque del meteorito 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 meteoritos 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
En Meteor 1.0.3.1 (actualización de la respuesta de Sergey.Simonchik)
Comience su servidor con meteor run --debug-port=<port-number>
Dirige el navegador a http://localhost:6222/debug?port=<port-number>
Donde <port-number>
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.
Escribí un pequeño paquete de meteoritos 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 .
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 declaración -
--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=<the port you specified in NODE_OPTIONS>
, independientemente de qué node-inspector
le indique que ejecute.
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 meteoritos:
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 meteoritos. 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!
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.
Para iniciar node.js en modo de depuración, lo hice de esta manera:
- abra /usr/lib/meteor/app/meteor/run.js
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:
- use ''--debug-brk'' en lugar de ''--debug'' aquí, porque es más fácil para mí adjuntar node.js usando eclipse como depurador.
- agregar ''depurador''; en el código donde quieres depurar. (Prefiero esta manera personalmente)
- ejecutar meteoro en la consola
- adjuntar a node.js en eclipse (herramientas V8, adjuntar a localhost: 5858)
- ejecutar, esperar a que el depurador sea golpeado
cuando comienzas meteorito en tu carpeta de aplicaciones de meteoritos, verás que el " depurador está escuchando en el puerto 5858 " en la consola.
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
.
Un inspector que resuelve mis problemas es la consola del servidor de meteoritos. Este es el proceso que seguí para instalarlo:
En la carpeta del proyecto, agregue el paquete inteligente
server-eval
:mrt add server-eval
Para Meteor 1.0:
meteor add gandev:server-eval
Reiniciar meteoro
- Descarga
crx
archivo de extensióncrx
Chrome desde here . - Abra la página de extensiones en Chrome y arrastre
crx
archivocrx
a la página de extensiones. - Reinicia Chrome.
Verifique el inspector web para evaluar el código del lado del servidor:
En comparación con el inspector de nodos, tengo una salida más clara.
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.