start node and node.js debugging vagrant webstorm

node.js - node - npm start webstorm



Conectando WebStorm a una sesión de depuración de node.js remota (4)

1) Desde el manual de WebStorm:

Cuando la aplicación para depurar se ejecuta en un host físicamente remoto, debe ejecutar un proxy o cualquier otro software que garantice el reenvío de puertos en el servidor Node.js. Esto es necesario porque el puerto de depuración solo puede abrirse en la interfaz de red localhost. No se puede acceder a la interfaz de red de localhost desde otra máquina, por lo tanto, WebStorm no puede conectarse a ella al iniciar una sesión de depuración.

2) localhost en VM no es el mismo localhost (por extraño que parezca) en el host.

3) El depurador V8 está escuchando en localhost

Solución:

Puede configurar el proxy ssh para linux VM: ssh -L 5858:127.0.0.1:5858 <vm_user>@<vm_ip> -N y aquí puede encontrar la respuesta sobre cómo hacerlo en Windows -> stackoverflow . la configuración de depuración en WebStorm será Host: 127.0.0.1 Puerto: 5858

Puede verificar si WebStorm está conectado a una sesión de depuración remota en la pestaña Depurador y en el panel Variables. no se puede conectar , connected

Estoy ejecutando una aplicación Node.js dentro de una máquina virtual de Linux en Oracle VirtualBox. El puerto 5858 en la VM se reenvía al puerto 5858 en el host local.

Estoy ejecutando WebStorm en el sistema operativo host (Windows 7). En WebStorm, hago clic en Run >> Edit Configurations.... Luego hago clic en el botón Agregar (el signo más) y selecciono Node.js remote debug Luego ingrese el nombre de la configuración y dejo el host como 127.0.0.1 y el puerto como 5858 . Hago clic en OK y me --debug mi aplicación de nodo se esté ejecutando en la VM con el indicador --debug .

Luego hago clic en el icono de error en la barra de herramientas de WebStorm y el depurador aparece en la parte inferior del IDE de WebStorm.

¿Cómo puedo confirmar que la conexión se realiza con éxito? Los puntos de interrupción no funcionan y la consola en WebStorm permanece vacía (mientras que la información se envía a la consola en la máquina virtual de Linux). ¿Alguien puede sugerir qué queda por hacer para que la sesión de depuración remota funcione?


En lugar de sólo

$ vagrant ssh

tratar

$ vagrant ssh -- -L 5858:127.0.0.1:5858

También config.vm.network :forwarded_port, guest: 5858, host: 5858 la línea config.vm.network :forwarded_port, guest: 5858, host: 5858 de mi Vagrantfile e hice una $ vagrant reload Vagrantfile .

En tu caja vagabunda corre

$ node --debug-brk path/to/file.js

Configure una configuración de Ejecución / depuración de depuración remota de Node.js; los valores predeterminados están bien (host 127.0.0.1 y puerto 5858).

Ejecute lo siguiente desde su máquina HOST, no desde su caja errante.

$ telnet 127.0.0.1 5858

Deberías obtener una respuesta como

Type: connect V8-Version: 3.14.5.9 Protocol-Version: 1 Embedding-Host: node v0.10.28 Content-Length: 0

Si no lo hace, entonces algo mal con el puerto hacia adelante. Puede probar un puerto diferente en el extremo del host y actualizar la configuración Ejecutar / Depurar de la tormenta web que se configuró previamente desde el puerto 5858 al nuevo puerto.

Ahora ejecute la configuración de depuración NodeJS. Inmediatamente debe recoger el archivo y podrá depurarlo.

Basé mis pasos en PHPStorm, pero debería ser el mismo. Supongo que funcionará en todos los IDEs basados ​​en IntelliJ siempre que tenga instalado el complemento NodeJS.


Esto es lo que hago en mi Linux Debian VM:

instalar balanceador

sudo apt-get install balance -y

cree una ruta en el equilibrador para redireccionar su puerto 5858 a 5859

balance 5859 127.0.0.1:5858

inicia tu aplicación

node --debug app.js

ahora puede acceder desde fuera de la máquina virtual en el puerto 5859


Solo un --debug-brk , cuando intenté esto tuve que usar --debug-brk . La ejecución con solo --debug no permitió que WebStorm estableciera puntos de interrupción después de la conexión.