javascript - studio - ¿Cómo depuro las aplicaciones Node.js?
node js v8-- inspector manager nim (30)
El nodo tiene su propio depurador de GUI incorporado a partir de la versión 6.3 (utilizando las herramientas de desarrollo de Chrome)
Simplemente pase el indicador de inspector y se le proporcionará una URL para el inspector:
node --inspect server.js
También puede interrumpir en la primera línea pasando --inspect-brk
en --inspect-brk
lugar.
Para abrir una ventana de Chrome automáticamente, use el módulo de inspect-process .
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
¿Cómo depuro una aplicación de servidor Node.js?
Ahora mismo estoy utilizando 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?
Depuración
Perfilado
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
- 0x
- jam3/devtool then Chrome Developer Tools Tablas de llamas
- Dtrace y StackVis : solo son compatibles con SmartOS
Rastreo
Explotación florestal
Bibliotecas que generan información de depuración
Bibliotecas que mejoran la información de seguimiento de la pila
Benchmarking
- Banco de Apache :
ab -n 100000 -c 1 http://127.0.0.1:9778/
- wrk
Otro
Legado
Estos funcionan para 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 la depuración incorporada
- https://github.com/c4milo/node-webkit-agent - reemplazado por el inspector de nodos
- https://nodetime.com/ - difunto
Asumiendo que tiene el inspector de nodos instalado en su computadora (si no, simplemente escriba ''npm install -g node-inspector'') solo tiene que ejecutar:
node-inspector & node --debug-brk scriptFileName.js
Y pegue el URI desde la línea de comandos en un navegador WebKit (Chrome / Safari).
Comience el proceso de su nodo con la bandera --inspect .
node --inspect index.js
y luego abrir chrome://inspect
en chrome. Haga clic en el enlace "Abrir DevTools dedicado para nodo" o instale this extensión de Chrome para abrir fácilmente DevTools de Chrome.
Para más información consulte this enlace.
El IDE de NetBeans ha tenido soporte de Node.js desde la versión 8.1 :
<...>
Nuevas características destacadas
Desarrollo de aplicaciones Node.js
- Nuevo asistente de proyecto Node.js
- Nuevo asistente de Node.js Express
- Editor de JavaScript mejorado
- Nuevo soporte para ejecutar aplicaciones Node.js
- Nuevo soporte para la depuración de aplicaciones Node.js.
<...>
Referencias adicionales:
El depurador V8 lanzado como parte de las herramientas de desarrollo de Google Chrome se puede usar para depurar los scripts Node.js. Puede encontrar una explicación detallada de cómo funciona esto en la wiki de Node.js GitHub .
Escribí un enfoque diferente para depurar el código Node.js que es estable y es extremadamente simple. Está disponible en https://github.com/s-a/iron-node .
Un depurador visual multiplataforma de código abierto.
Instalación:
npm install iron-node -g;
Depurar:
iron-node yourscript.js;
Existe el nuevo proyecto de código abierto nodeclipse.org (como un complemento de Eclipse o Enide Studio ):
http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png
Nodeclipse se convirtió en el número 1 de los 10 complementos NUEVOS de Eclipse para 2013 . Utiliza un depurador V8 modificado (de Google Chrome Developer Tools para Java).
Nodeclipse es un software gratuito de código abierto lanzado al comienzo de cada mes .
Hay muchas posibilidades ...
- Debugger incluye una Debugger
- inspector de nodos
- Editores de código / IDE (consulte las instrucciones de depuración para uno de los siguientes)
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 .
Hay un cliente de depurador de línea de comandos incorporado dentro de Node.js. Cloud 9 IDE también tiene un buen Debugger (visual).
Muchas respuestas excelentes aquí, pero me gustaría agregar mi punto de vista (en función de cómo evolucionó mi enfoque)
Registros de depuración
Afrontémoslo, a todos nos encanta una buena console.log(''Uh oh, if you reached here, you better run.'')
y eso funciona muy bien, así que si eres reticente a moverte demasiado lejos, al menos agrega. Algunos bling a sus registros con la depuración de Visionmedia .
Depuración interactiva
Tan útil como el registro de la consola puede ser, para depurar profesionalmente, necesita remangarse y atascarse. Establezca puntos de interrupción, paso a través de su código, inspeccione los ámbitos y las variables para ver qué está causando ese extraño comportamiento. Como otros han mencionado, node-inspector es realmente las rodillas de las abejas. Hace todo lo que puede hacer con el depurador incorporado, pero utilizando esa interfaz familiar de Chrome DevTools. Si, como yo, usas Webstorm , here tienes una guía práctica para depurar desde allí.
Trazas de pila
De forma predeterminada, no podemos rastrear una serie de operaciones en diferentes ciclos del bucle de eventos (tics). Para solucionar 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, echa un vistazo a
- RisingStack - Depuración de aplicaciones Node.js
- Excelente artículo de David Mark Clements de nearForm
Si tienes ganas de ver un video (s) entonces
- Netflix JS Talks - Depuración de Node.js en producción
- Video interesante del grupo de trabajo de rastreo sobre rastreo y depuración de node.js
- Vídeo realmente informativo de 15 minutos sobre el inspector de nodos.
Cualquiera que sea la ruta que elija, solo asegúrese de entender cómo está depurando
Es algo doloroso
Para ver tu propio problema y saberlo.
Que tú mismo y nadie más lo haya hecho.Sófocles, ajax
Node.js versión 0.3.4+ tiene soporte de depuración incorporado.
node debug script.js
Personalmente uso JetBrains WebStorm ya que es el único IDE de JavaScript que he encontrado, lo que es excelente tanto para el frontend como para el backend de JavaScript.
Funciona en varios sistemas operativos y tiene la depuración Node.js integrada (así como un montón de otras cosas) ( http://www.jetbrains.com/webstorm/features/index.html ).
Mis únicos ''temas'' / artículos de la lista de deseos son eran :
Parece tener más hambre de recursos en Mac que en WindowsYa no parece un problema en la versión 6.Sería bueno si tuviera soporte para Snippets (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 las plantillas en vivo también tiene soporte de fragmentos.
Preparé un breve resumen de depuración de Node.js sobre el uso del inspector de nodos para aquellos que no están seguros de por dónde empezar.
Sólo para estar completo:
Si está utilizando el IDE de Atom , puede instalar el paquete de node-debugger
del node-debugger
.
Si necesita una biblioteca de registro potente para Node.js, Tracer es una mejor opción.
Da salida a los mensajes de registro con una marca de tiempo, un nombre de archivo, un nombre de método, un número de línea, una ruta o una pila de llamadas, una consola de color compatible y una base de datos de soporte, un archivo y un transporte de flujo fácilmente. Yo soy el autor
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.
$ npm install -g browserify
Ahora mueva todas sus llamadas var x = requires(''x'')
a un archivo requires.js
y ejecute:
$ browserify requires.js -s window -o bundle.js
(La desventaja aquí es que tienes que mover o comentar los requires
en todos tus archivos).
Incluya el bundle.js
en un archivo HTML así:
<script type="text/javascript" src="bundle.js"></script>
Ahora cargue el archivo en su navegador y presione F12 y viola: depurar en el navegador.
Usando la versión 67.0.3396.62 de Chrome (+)
- Ejecutar aplicación de nodo
nodo --inspect-brk = 0.0.0.0: 9229 server.js (nombre de archivo del servidor js)
- Busca tu aplicación en Chrome, por ejemplo, "localhost: puerto"
- Abre DevTools.
- Haga clic en el icono del nodo junto al icono del dispositivo receptivo.
Habrá otra ventana de DevTools que se abrirá específicamente para la aplicación del nodo de depuración.
Utilice Webstorm! Es perfecto para depurar aplicaciones de Node.js. Tiene un depurador incorporado. Revise los documentos aquí: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
Yo usaría GOOD by Walmart Labs. Hará el trabajo, y es muy flexible:
var hapi = require(''hapi'');
var good = require(''good'');
var server = hapi.createServer(''localhost'', 5000,{});
server.route({SOME ROUTE HERE});
server.start();
var options = {
subscribers: {
''console'': [''ops'', ''request'', ''log'', ''error''],
''http://localhost/logs'': [''log'']
}
};
server.pack.require(''good'', options, function (err) {
if (!err) {
console.log(''Plugin loaded successfully'');
}
});
node-inspector podría salvar el día! Úsalo desde cualquier navegador que soporte WebSocket . Puntos de interrupción, perfilador, codificación en tiempo real, etc. Es realmente impresionante.
Instalalo con:
npm install -g node-inspector
Entonces corre:
node-debug app.js
Visual Studio Code funcionará para nosotros en la depuración.
Visual Studio Code tiene un excelente 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 puedes depurar tareas de gruñido y trago , en caso de que necesites ...
pry.js una pequeña herramienta llamada pry.js que puede ayudarte.
Coloque una declaración simple en algún lugar de su código, ejecute su secuencia de comandos normalmente y el nodo detendrá el hilo actual que le dará acceso a todas sus variables y funciones. Ver / editar / eliminarlos 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()
Las herramientas Node.js para Visual Studio 2012 o 2013 incluyen un depurador. La descripción general here indica que "Node.js Tools para Visual Studio incluye soporte completo para la depuración de aplicaciones de nodo". Siendo nuevo en Node.js, pero con antecedentes en .NET, he encontrado que este complemento es una excelente manera de depurar las aplicaciones de Node.js.
IntelliJ funciona maravillosamente para Node.js.
Además, IntelliJ apoya bien el ''Código de Asistencia''.
El código de Visual Studio será mi elección para la depuración. No hay gastos generales de instalación de herramientas o npm install
cosas. Simplemente configure el punto de inicio de su aplicación en package.json y VSCode creará automáticamente un archivo de configuración dentro de su solución. Se basa en Electron , en el que se construyen editores como Atom.
VS Code ofrece una experiencia de depuración similar a la que podría haber tenido en otros IDEs como VS, Eclipse, etc.
node-debug -p 8888 scriptFileName.js