¿Cómo depuro aplicaciones Node.js?
-
19-09-2019 - |
Pregunta
¿Cómo depuro una aplicación de servidor Node.js?
En este momento estoy usando principalmente depuración de alertas con declaraciones impresas como esta:
sys.puts(sys.inspect(someVariable));
Debe haber una mejor manera de depurar.Yo sé eso Google Chrome tiene un depurador de línea de comandos.¿Este depurador también está disponible para Node.js?
Solución 3
El V8 depurador lanzado como parte de la Google Chrome Herramientas de Desarrollo se pueden utilizar para depurar Node.js guiones. Una explicación detallada de cómo funciona esto se puede encontrar en el Nodo rel="noreferrer"> .
Otros consejos
nodo-inspector de podría salvar el día! Utilizarlo desde cualquier navegador que soporte WebSocket . Los puntos de interrupción, perfilador, livecoding, etc ... Es realmente impresionante.
Instalar con:
npm install -g node-inspector
A continuación, ejecute:
node-debug app.js
Depuración
Perfilado
node --prof ./app.js
node --prof-process ./the-generated-log-file
volcados de montón
Flamegrafos
- 0x
- jam3/devtool entonces Gráficos de llamas de herramientas para desarrolladores de Chrome
- Dtrace y pilaVis — Solo compatible con SmartOS
- clínicajs
Rastreo
Inicio sesión
Bibliotecas que generan información de depuración
Bibliotecas que mejoran la información de seguimiento de la pila
Evaluación comparativa
- Banco apache:
ab -n 100000 -c 1 http://127.0.0.1:9778/
- trabajo
Otro
Legado
Estos solían funcionar, pero ya no se mantienen o ya no son aplicables a las versiones modernas de nodos.
- https://github.com/bnoordhuis/node-profiler - reemplazado por depuración incorporada
- https://github.com/c4milo/node-webkit-agent - reemplazado por inspector de nodos
- https://nodetime.com/ - desaparecido
nodo tiene su propia rel="noreferrer"> partir de la versión 6.3 (usando DevTools de Chrome )
Basta con pasar la bandera inspector y se le proporcionó con una URL para el inspector:
node --inspect server.js
También puede romper en la primera línea que pasa por --inspect-brk
lugar.
Para abrir una ventana de Chrome automáticamente, utilice el inspeccionar-proceso módulo.
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
Node.js versión 0.3.4+ ha incorporado en el soporte de depuración.
node debug script.js
código de Visual Studio será mi elección para la depuración. Ninguna sobrecarga de la instalación de herramientas o material npm install
.
Sólo hay que establecer 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. Es construir sobre Electrón , sobre la que se construyen editores como Atom.
VS Código da experiencia de depuración similar a la que pueda tener tenido en otros entornos de desarrollo como VS, Eclipse, etc.
Yo personalmente uso JetBrains WebStorm ya que es el único IDE para JavaScript que he encontrado que es ideal tanto para frontend y backend JavaScript.
Se trabaja en múltiples sistemas operativos y tiene Node.js depuración incorporada (así como un montón de otras cosas] ( http://www.jetbrains.com/webstorm/features/index.html ).
Mis únicos problemas '' / artículo en su lista son estaban
-
Parece ser más ávidas de recursos en Mac que WindowsYa no parece un problema en la versión 6. -
Sería bueno si tuviera el apoyo de fragmentos (como las de Sublime Text 2 - es decir, tipo 'diversión' y toque 'ficha' a poner en una funciónVer @WickyNilliams comentario a continuación -.. con plantillas de apoyo directo que también han fragmento de código
Una gran cantidad de grandes respuestas aquí, pero me gustaría añadir mi punto de vista (en función de cómo mi enfoque evolucionó)
Registros de depuración
Vamos hacerle frente, a todos nos gusta una buena console.log('Uh oh, if you reached here, you better run.')
ya veces eso funciona muy bien, así que si eres reticente a ir demasiado lejos de ella, al menos, añadir un poco de bling a sus registros con Visionmedia de depuración .
depuración interactiva
Como práctico, ya que el registro de la consola puede ser, para depurar profesional que necesita para subirse las mangas y quedar atrapado en. Establecer puntos de interrupción, recorrer el código, inspeccionar ámbitos y variables para ver cuál es la causa de que el comportamiento extraño. Como otros han mencionado, nodo-inspector de realmente las abejas rodillas. Hace todo lo que puede hacer con la interfaz de Chrome que DevTools familiarizado depurador integrado, pero utilizando. Si, como yo, se utiliza WebStorm y aquí es una guía útil para la depuración de allí.
trazas de la pila
Por defecto, no podemos trazar una serie de operaciones a través de diferentes ciclos de la bucle de eventos (garrapatas). Para evitar esto echar un vistazo a longjohn (pero no en la producción!).
Pérdidas de memoria
Con Node.js que puede tener un proceso de servidor espera que permanezca para un tiempo considerable. ¿Qué hacer si cree que ha surgido algunas fugas desagradables? Usar Heapdump y Chrome DevTools comparar algunas instantáneas y ver lo que está cambiando.
Para algunos artículos útiles, echa un vistazo a
Si usted se siente como ver un video (s) a continuación
- Netflix JS conversaciones - Node.js depuración de Producción
- Interesante vídeo desde el trazado grupo de trabajo sobre el rastreo y la depuración de node.js
- muy informativo video de 15 minutos en el nodo-inspector de
Cualquiera que sea el camino que elija, sólo asegúrese de que entiende cómo se depura
Es una cosa dolorosa
Mirar su propio mal y saber
Que usted mismo y nadie más ha hechoSófocles, Ajax
Node.js Tools para Visual Studio 2012 o 2013 incluye un depurador. El aquí Unidos "Herramientas Node.js para Visual Studio incluye soporte completo para depurar aplicaciones de nodo.". Al ser nuevo en Node.js, pero tener un fondo en .NET, he encontrado este complemento en ser una gran manera de depurar aplicaciones Node.js.
Visual ha realmente agradables Node.js compatibilidad de depuración. Es gratuito, de código abierto y multiplataforma y funciona en Linux, OS X y Windows.
Puede incluso depuración tareas gruñido y trago , en caso de que tenga que ...
escribí un enfoque diferente para depurar código de Node.js que es estable y es extremadamente simple. Está disponible en https://github.com/sa/iron-node .
Un opensource multiplataforma depurador visual.
Instalación:
npm install iron-node -g;
Depuración:
iron-node yourscript.js;
Si está utilizando la Atom IDE , puede instalar el paquete node-debugger
.
Uso de Chrome Versión 67.0.3396.62 (+)
- Ejecutar aplicación nodo
nodo --inspect-brk = 0.0.0.0: 9229 server.js (nombre de archivo del servidor js)
- Examine su aplicación en cromo, por ejemplo, "Localhost: puerto"
- DevTools abiertas.
- Haga clic en el icono del nodo junto al icono del dispositivo de respuesta.
Habrá otra ventana DevTools que aparecerá a cabo específicamente para la depuración de aplicación nodo.
He creado una pequeña herramienta llamada ordenada pry.js que pueden serle de ayuda.
Ponga una simple declaración en alguna parte de su código, ejecute la secuencia de comandos normalmente y nodo se detendrá el flujo actual que le da acceso a todas las variables y funciones. Ver / editar / borrar a voluntad!
pry = require('pryjs')
class FizzBuzz
run: ->
for i in [1..100]
output = ''
eval(pry.it) # magic
output += "Fizz" if i % 3 is 0
output += "Buzz" if i % 5 is 0
console.log output || i
bar: ->
10
fizz = new FizzBuzz()
fizz.run()
No está incorporado en la línea de comandos depurador cliente dentro Node.js. Cloud 9 IDE tiene también bastante agradable (visual) depurador .
código de Visual Studio va a trabajar para nosotros en la depuración.
Monté un corto Node.js depuración imprimación sobre el uso de la etiqueta < a href = "https://github.com/node-inspector/node-inspector" rel = "nofollow noreferrer"> nodo-inspector de para aquellos que no están seguros de por dónde empezar.
Utilice WebStorm! Es perfecto para depurar aplicaciones Node.js. Cuenta con un depurador incorporado. Echa un vistazo a los documentos aquí: https: // www .jetbrains.com / help / WebStorm / 2016.1 / marcha-y-depuración de nodo js.html
Si necesita una potente biblioteca de registro para Node.js, trazador https://github.com/baryon/tracer es una mejor opción.
Se da salida a los mensajes de registro con una marca de tiempo, nombre de archivo, nombre del método, número de línea, una ruta o una llamada pila, color consola de apoyo, el apoyo y base de datos, archivo, secuencia transporte fácilmente. Yo soy el autor.
Asumiendo que tiene ganglios inspector instalado en su ordenador (si no es así, sólo tiene que escribir 'NPM instalar -g nodo-inspector') sólo hay que ejecutar:
node-inspector & node --debug-brk scriptFileName.js
y pegue el URI de la línea de comandos en un WebKit (Chrome / Safari) del navegador.
Comience el proceso de nodo con -. Inspeccionar bandera
node --inspect index.js
y luego chrome://inspect
abierto en cromo. Haga clic en "DevTools dedicados abiertas para el nodo" enlace o instalar este extensión de Chrome para abrir fácilmente DevTools cromo.
Para más información consulta este enlace
Hay muchas posibilidades ...
- nodo incluye un utilidad depuración
- nodo-inspector
- editores de código / IDE (ver instrucciones de depuración para una de las siguientes)
Depuración de apoyo a menudo se implementa mediante el v8 Depuración Protocolo o el nuevo < a href = "https://developer.chrome.com/devtools/docs/debugger-protocol" rel = "noreferrer"> Protocolo de depuración Chrome .
No es el nuevo de código abierto proyecto Nodeclipse (como un plugin Eclipse o Enide Studio ):
Nodeclipse se convirtió en # 1 en rel="nofollow Eclipse Top 10 nuevos plugins para 2013 . Se utiliza una V8 depurador modificado (de Google Chrome Developer Tools para Java).
Nodeclipse es un software libre de código abierto lanzado al comienzo de cada mes .
IntelliJ funciona de maravilla para Node.js.
Además, es compatible con IntelliJ 'Asistencia Código' también.
El IDE ha tenido apoyo Node.js desde versión 8.1 :
<...>
Nuevas Características más
Node.js desarrollo de aplicaciones
- Nuevo asistente de proyectos Node.js
- Asistente de Nueva Node.js expreso
- mejorado JavaScript Editor
- El nuevo soporte para la ejecución de aplicaciones Node.js
- El nuevo soporte para la depuración de aplicaciones Node.js.
<...>
Referencias adicionales:
Esta comandos
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
Una manera rápida y sucia a depurar pequeños scripts Node.js con su favorito depurador navegador sería utilizar browserify . Tenga en cuenta que este enfoque no funciona con todas las aplicaciones que requieren nativos I / O bibliotecas, pero es lo suficientemente bueno para guiones más pequeñas.
$ npm install -g browserify
Ahora mover todos sus var x = requires('x')
pone en un archivo requires.js
y ejecute:
$ browserify requires.js -s window -o bundle.js
(La desventaja aquí es que usted tiene que trasladar o comentar la requires
en todos sus archivos.)
Incluir el bundle.js
en un archivo HTML de esta manera:
<script type="text/javascript" src="bundle.js"></script>
Ahora carga el archivo en su navegador y presione F12 y la viola:. Depuración en el navegador
NDB es una experiencia de depuración mejorada para Node.js, habilitado por Chrome DevTools