Configuración de la depuración de JS con IntelliJ / WebStorm y PhantomJS / Casper


¿Puedo obtener un depurador JS interactivo que funcione en PhantomJS y/o CasperJS?

Author: Indolering, 2013-03-26

2 answers

PhantomJS tiene una opción remote-debugger-port que puedes usar para depurar tu script casper en Chrome dev tools. Para usarlo, simplemente ejecute su script casper con este argumento:

casperjs test script.js --remote-debugger-port=9000

Entonces, abre http://localhost:9000 en Chrome y haga clic en el enlace about:blank que se presenta. A continuación, debe encontrarse en el territorio familiar de Chrome dev tools.

Dado que este es un script y no una página web, para comenzar a depurar, debe hacer una de dos cosas antes de el script se ejecutará:

  1. En la página Chrome dev tools, abre la consola y ejecuta __run() para iniciar tu script.
  2. Inserte una línea debugger; en su código, y ejecute su script casper con un argumento adicional --remote-debugger-autorun=yes. Al hacerlo con la página de depuración remota abierta, se ejecutará el script hasta que llegue a la línea debugger;.

Hay un gran tutorial que explica todo esto muy bien.

 6
Author: brettjonesdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-14 15:27:48

No resolví esto por completo, pero definitivamente reduje el dolor.

PhantomJS proporciona un argumento de línea de comandos para habilitar el depurador remoto de webkit. AFAIK, PhantomJS lanza un servidor y vuelca el script en el <head> de una página web con el conocido depurador en el navegador. En realidad es bastante agradable, con puntos de interrupción, etc. Sin embargo, cambiar a indagar manualmente en el terminal para obtener un parámetro de línea de comandos aleatorio y la ruta a su script es serio irritante.

Por lo tanto, He utilizado IntelliJ "herramientas externas" característica para lanzar un script Bash que mata a cualquier sesión de depuración anterior, lanza PhantomJS, y luego abre la página en Chrome.

#!/bin/bash

lsof -i [email protected]:9000 #list anything bound to port 9000
if [ $? -eq 0 ] #if something was listed
    then
        killall 'phantomjs'
fi

/usr/local/Cellar/phantomjs/2.0.0/bin/phantomjs --remote-debugger-port=9000 $1 & 
# --remote-debugger-autorun=yes <- use if you have added 'debugger;' break points
# replace $1 with full path if you don't pass it as a variable.

sleep 2; #give phantomJS time to get started

open -a /Applications/Google\ Chrome.app http://localhost:9000 & #linux has a different 'open' command
# alt URL if you want to skip the page listing
# http://localhost:9000/webkit/inspector/inspector.html?page=1

#see also
#github.com/ariya/phantomjs/wiki/Troubleshooting

Las siguientes líneas son ajustes para IntelliJ, aunque el código anterior funciona igual de bien en cualquier plataforma/IDE.

Programa: $ProjectFileDir$/path/to/bash/script.sh
parámetros: $FilePath$
dirección de trabajo: $ProjectFileDir$

 15
Author: Indolering,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-02 21:52:11