¿Cómo depuro una aplicación de servidor Node.js?
En este momento estoy usando principalmente la depuración de alertas con declaraciones de impresión como esta:
sys.puts(sys.inspect(someVariable));
Debe haber una mejor manera de depurar. Sé que Google Chrome tiene un depurador de línea de comandos. ¿Este depurador también está disponible para Node.js?
javascript
node.js
debugging
google-chrome-devtools
Fabian Jakobs
fuente
fuente
--inspect-brk
INSTEAD OF--inspect
si desea depurar el código del servidor real en el momento de la carga. Ver stackoverflow.com/questions/59596138Respuestas:
inspector de nodos podría salvar el día! Úselo desde cualquier navegador que admita WebSocket . Puntos de interrupción, perfilador, codificación en vivo, etc. Es realmente increíble.
Instalarlo con:
Entonces corre:
fuente
Depuración
Perfilado
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Flameógrafos
Rastreo
Inicio sesión
Bibliotecas que generan información de depuración
Bibliotecas que mejoran la información de seguimiento de la pila
Benchmarking
ab -n 100000 -c 1 http://127.0.0.1:9778/
Otro
Legado
Suelen funcionar pero ya no se mantienen o ya no son aplicables a las versiones modernas de nodos.
fuente
look
módulo, como se señala en stackoverflow.com/questions/12864221/nodejs-memory- perfiladonprof
+v8.log
denode --prof
.El depurador V8 lanzado como parte de las Herramientas para desarrolladores de Google Chrome se puede usar para depurar los scripts de Node.js. Una explicación detallada de cómo funciona esto se puede encontrar en el wiki Node.js GitHub .
fuente
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
Nodo tiene su propio construido en la GUI depurador partir de la versión 6.3 (usando DevTools de Chrome)
Simplemente pase la bandera del inspector y se le proporcionará una URL al inspector:
También puede romper en la primera línea pasando en su
--inspect-brk
lugar.fuente
Node.js versión 0.3.4+ tiene soporte de depuración incorporado.
node debug script.js
Manual: http://nodejs.org/api/debugger.html
fuente
--debug
adebug
sin los guiones. Así es como finalmente lo puse a trabajar. Es confuso--debug
ydebug
hacer dos cosas diferentes.app is already running...
", cuando trato de continuar y me encuentro con una declaración que está tratando de obtener información, me devuelve el mensaje de depuración en lugar de permitirme ingresar la información que se requiere.Visual Studio Code será mi elección para la depuración. Sin gastos generales de instalación de herramientas o
npm install
cosas. Simplemente configure el punto de partida de su aplicación en package.json y VSCode creará automáticamente un archivo de configuración dentro de su solución. Está construido sobre Electron , en el que se basan editores como Atom.fuente
Personalmente uso JetBrains WebStorm, ya que es el único IDE de JavaScript que he encontrado, que es excelente tanto para JavaScript frontend como backend.
Funciona en múltiples sistemas operativos y tiene la depuración Node.js incorporada (así como un montón de otras cosas) ( http://www.jetbrains.com/webstorm/features/index.html ).
Mis únicos 'problemas' / artículos de la lista de deseos
sonfueron :Parece tener más recursos en Mac que WindowsYa no parece un problema en la versión 6.Sería bueno si tuviera soporte Snippet (como los de Sublime Text 2 , es decir, escriba 'diversión' y toque 'pestaña' para poner una función.Vea el comentario de @WickyNilliams a continuación: con Live Templates también tiene soporte de fragmentos.fuente
Muchas respuestas geniales aquí, pero me gustaría agregar mi punto de vista (basado en cómo evolucionó mi enfoque)
Registros de depuración
Seamos realistas, a todos nos encanta un bien
console.log('Uh oh, if you reached here, you better run.')
y, a veces, eso funciona muy bien, así que si eres reticente a alejarte demasiado, al menos agrega un poco de brillo a tus registros con la depuración de Visionmedia .Depuración interactiva
A pesar de lo útil que puede ser el registro de la consola, para depurar profesionalmente debe arremangarse y quedarse atrapado. Establezca puntos de interrupción, recorra su código, inspeccione los ámbitos y las variables para ver qué está causando ese comportamiento extraño. Como otros han mencionado, el inspector de nodos realmente es la rodilla de las abejas. Hace todo lo que puede hacer con el depurador incorporado, pero usando esa interfaz familiar de Chrome DevTools. Si, como yo, usa Webstorm , aquí hay una guía práctica para depurar desde allí.
Rastros de pila
Por defecto, no podemos rastrear una serie de operaciones en diferentes ciclos del ciclo de eventos (ticks). Para evitar esto, eche un vistazo a Longjohn (¡pero no en producción!).
Pérdidas de memoria
Con Node.js podemos tener un proceso de servidor que se espera que permanezca activo durante un tiempo considerable. ¿Qué haces si crees que ha surgido algunas fugas desagradables? Use heapdump y Chrome DevTools para comparar algunas instantáneas y ver qué está cambiando.
Para algunos artículos útiles, consulte
Si tienes ganas de ver un video (s) entonces
Cualquiera sea el camino que elija, solo asegúrese de comprender cómo está depurando
fuente
Theseus es un proyecto de Adobe Research que le permite depurar su código Node.js en sus corchetes del editor de código abierto . Tiene algunas características interesantes como cobertura de código en tiempo real, inspección retroactiva, árbol de llamadas asíncronas.
fuente
Las herramientas de Node.js para Visual Studio 2012 o 2013 incluyen un depurador. La descripción general aquí indica que "Node.js Tools for Visual Studio incluye soporte completo para depurar aplicaciones de nodo". Al ser nuevo en Node.js, pero con experiencia en .NET, he encontrado que este complemento es una excelente manera de depurar las aplicaciones de Node.js.
fuente
Visual Studio Code tiene un buen soporte de depuración de Node.js. Es gratuito, de código abierto y multiplataforma y se ejecuta en Linux, OS X y Windows.
Incluso puede depurar tareas de gruñidos y tragos , si necesita ...
fuente
Escribí un enfoque diferente para depurar el código Node.js que es estable y es extremadamente simple. Está disponible en https://github.com/sa/iron-node .
Un depurador visual multiplataforma de código abierto.
Instalación:
npm install iron-node -g;
Depurar:
iron-node yourscript.js;
fuente
Si está utilizando Atom IDE , puede instalar el
node-debugger
paquete.fuente
Uso de la versión de Chrome 67.0.3396.62 (+)
Habrá otra ventana de DevTools que aparecerá específicamente para la aplicación de nodo de depuración.
fuente
Creé una herramienta pequeña y ordenada llamada pry.js que puede ayudarte.
Ponga una declaración simple en algún lugar de su código, ejecute su script normalmente y el nodo detendrá el hilo actual y le dará acceso a todas sus variables y funciones. Ver / editar / eliminarlos a voluntad!
fuente
Hay un cliente de depurador de línea de comando incorporado dentro de Node.js. Cloud 9 IDE también tiene un depurador (visual) bastante bueno .
fuente
Visual Studio Code nos funcionará en la depuración.
fuente
Reuní un breve manual de depuración de Node.js sobre el uso del nodo-inspector para aquellos que no están seguros de dónde comenzar.
fuente
Utilice Webstorm! Es perfecto para depurar aplicaciones Node.js. Tiene un depurador incorporado. Consulte los documentos aquí: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
fuente
Comience su proceso de nodo con --inspect flag.
node --inspect index.js
y luego Abrir
chrome://inspect
en cromo. Haga clic en el enlace "Abrir DevTools dedicado para el nodo" o instale esto extensión de Chrome para abrir fácilmente DevTools de Chrome.Para más información consulte este enlace
fuente
Si necesita una biblioteca de registro potente para Node.js, Tracer https://github.com/baryon/tracer es una mejor opción.
Produce mensajes de registro con una marca de tiempo, nombre de archivo, nombre de método, número de línea, ruta o pila de llamadas, soporte de consola de color y soporte de base de datos, archivo, transporte de flujo fácilmente. Yo soy el autor
fuente
Suponiendo que tenga instalado el inspector de nodos en su computadora (si no, simplemente escriba 'npm install -g node-inspector') solo tiene que ejecutar:
Y pegue el URI desde la línea de comando en un navegador WebKit (Chrome / Safari).
fuente
Solo para completar:
El complemento PyCharm 3.0 + Node.js ofrece una increíble experiencia de desarrollo + ejecución + depuración .
fuente
IntelliJ funciona maravillosamente para Node.js.
Además, IntelliJ admite bien la 'Asistencia de código'.
fuente
Hay muchas posibilidades ...
El soporte de depuración a menudo se implementa utilizando el Protocolo de depuración v8 o el nuevo Protocolo de depuración de Chrome .
fuente
Existe el nuevo proyecto Nodeclipse de código abierto (como un complemento Eclipse o Enide Studio ):
Nodeclipse se convirtió en el # 1 en Eclipse Top 10 NUEVOS complementos para 2013 . Utiliza un depurador V8 modificado (de Google Chrome Developer Tools para Java).
Nodeclipse es un software gratuito de código abierto lanzado a principios de cada mes .
fuente
El IDE de NetBeans ha tenido soporte para Node.js desde la versión 8.1 :
Referencias adicionales:
fuente
Usa estos comandos
fuente
ndb es una experiencia de depuración mejorada para Node.js, habilitada por Chrome DevTools
https://github.com/GoogleChromeLabs/ndb
fuente
Una forma rápida y sucia de depurar pequeños scripts de Node.js con su depurador de navegador favorito sería usar browserify . Tenga en cuenta que este enfoque no funciona con ninguna aplicación que requiera bibliotecas de E / S nativas, pero es lo suficientemente bueno para la mayoría de los scripts pequeños.
Ahora mueva todas sus
var x = requires('x')
llamadas a unrequires.js
archivo y ejecute:(La desventaja aquí es que debes mover o comentar
requires
en todos tus archivos).Incluya el
bundle.js
en un archivo HTML de esta manera:Ahora cargue el archivo en su navegador y presione F12y viola: depurar en el navegador.
fuente