2011-12-09 8 views
9

Tengo una caja de Windows y una máquina virtual que ejecuta CentOS. ¿Alguien sabe cómo puedo depurar una secuencia de comandos CLI de nodo (que no abre un puerto) usando PHPStorm? La "configuración de edición" parece solo admitir la conexión en algún lugar en lugar de escuchar las conexiones entrantes.Cómo depurar de manera remota el nodo JS con PHPStorm?

+0

¿Qué estás tratando de lograr exactamente aquí? – alessioalex

+0

@alessioalex, establezca el punto de interrupción, lea vars, y tal - igual que con xDebug remoto - Estableceré bp en PHPStorm, comenzaré a escuchar, usaría putty para ejecutar el script de nodo en la vm y se comunicará con el IDE para déjame hacer todas las cosas útiles – Fluffy

+1

Otra opción podría ser configurar el túnel SSH para que el puerto abierto en la máquina local redirija al puerto en el servidor remoto. – CrazyCoder

Respuesta

9

Asegúrese de tener instalado nodejs plugin.

Si su servidor tiene el paquete equilibrador disponible (mi caja EC2 no), puede use this tutorial para reenviar el puerto con balanceador.

yum install balance -yt 
balance -df 8585 127.0.0.1.5858 

Muchos éxito con un informe de iptables redirección desde eth0 a lo (no funcionó para mí) así:

iptables -t nat -A PREROUTING -p tcp -m tcp -i eth0 --dport 5858 -j DNAT --to 127.0.0.1:5858 

También hay un simple script nodo described in this eclipse debugging tut (cerca de la parte inferior), eso tunelizará su depuración local a un host remoto.

Pero una vez que estuve tan lejos en el camino, no vi el punto ya que estoy familiarizado con SSH. Así que en última instancia, I went with an SSH tunnel y configurar PHPStorm para depurar localhost. SSH Tunnel using putty

PHPStorm configuration

+1

Parece que PHPStorm acaba de lanzar una solución para [el error con rutas remotas] (http://youtrack.jetbrains.com/issue/WI-9821?projectKey=WI)! Eso debería ser muy emocionante. – Kato

+0

¿Aún necesita establecer un encabezado cuando se conecta desde un navegador como para las sesiones de depuración de PHP? Además, ¿puede establecer puntos de interrupción en el código dentro de PHPStorm o necesita hacer uso de sys.debug()? – codecowboy

6

Para los usuarios que no sean Windows, aquí es cómo configurar el túnel de reenvío de puertos usando ssh:

ssh -f [email protected] -L local_port:localhost:port_on_remote -N 

Esto significa "ssh para your-remote-host, registrado como ssh_user Una vez allí abierta. conexión a localhost:port_on_remote y exponer esta conexión al local_port de la máquina donde se ejecuta ssh ".

La pieza no es obvio es necesario utilizar localhost, ya que el depurador de nodo sólo se obliga a localhost dirección IP (y no a la dirección a la que your-remote-host resolvería).

Ejemplo con valores reales:

ssh -f [email protected] -L 5858:localhost:5858 -N 

(basado en this howto, sólo me tomó un tiempo para averiguar la pieza localhost).

Cuestiones relacionadas