node debugger debug node.js webstorm javascript-debugger

node.js - debugger - webstorm debug node



`Conexión rechazada ''en la configuración de depuración de WebStorm NPM (2)

Teniendo en cuenta que solo entiendo lo que realmente está haciendo un depurador, necesito ayuda para configurar la configuración de depuración de WebStorm npm para una aplicación express.js .

Aquí estoy yo hasta ahora. Hago clic en depurar con mi configuración, ya que creo que deberían ser (a continuación):

/Users/me/.nvm/versions/node/v4.4.1/bin/node --debug=8090 /Users/me/.nvm/versions/node/v4.4.1/lib/node_modules/npm/bin/npm-cli.js run-script start To debug "start" script, make sure $NODE_DEBUG_OPTION string is specified as the first argument for node command you''d like to debug. For example: { "start": "node $NODE_DEBUG_OPTION server.js" } Debugger listening on port 8090 ... It has begun. Port: 3000

Entonces, en este punto, la aplicación se inició y responde a mi POST a localhost:3000 , pero no se interrumpe en el punto de interrupción que establecí.

Al mirar en el panel Depurador> Variables, veo Connecting to localhost:57617 , luego aparece una información sobre herramientas que dice "Conexión rechazada" y el panel dice que Frame is not available .

No entiendo de dónde viene ese número de puerto 57617. Varía, aunque no de acuerdo con ningún patrón que haya descubierto, excepto en la medida en que siempre es diferente al que configuré en la --debug=X del --debug=X o --debug-brk=X


El mensaje de error es de hecho muy poco claro. Necesita ajustar su entrada de script npm en package.json (por desgracia). Encontré una descripción clara en esta publicación del blog: http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

Su entrada de start debe ser similar a la siguiente:

"scripts": { "start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" }

También puedes ir con dos entradas para mantener la primera SECA. Aunque no es realmente necesario ya que ambos se ejecutan bien desde la línea de comandos. Así que sólo para completar:

"scripts": { "start": "someModule --arguments", "startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" }

No encuentro este método particularmente limpio, imo que es lo que el depurador de npm debería hacer por usted sin tener que manipular el código fuente. Pero parece ser la única manera (por ahora).


Nunca he necesitado esto en versiones anteriores de Node o Webstorm. No estoy seguro de qué cambio se requiere esta opción ahora.

Tuve que agregarlo en el package.json , sin embargo, agregarlo a la configuración de ejecución no funciona. Y tuve que hacer un script separado porque se rompió al ejecutar cualquier script sin depurar.

Aquí está mi package.json (tenga en cuenta las variables de estilo de Windows% VAR%, use $ VAR para sistemas similares a Unix ):

"scripts": { "start": "node index.js", "debug": "node %NODE_DEBUG_OPTION% index.js", },

Luego, cuando quiero depurar, uso una configuración de ejecución que llama a la opción de depuración, porque al menos en Windows, el nodo está tomando la var literalmente cuando no se reemplaza.

Si intenta ingresar la variable en el diálogo de configuración de ejecución de Webstorm (2016.3.3):

Resulta en estos comandos reales, que son incorrectos:

Como argumento de guión:

"C:/.../runnerw.exe" "C:/.../node.exe" "C:/.../npm-cli.js" run start %NODE_DEBUG_OPTION%

Como opción de nodo:

"C:/.../runnerw.exe" "C:/.../node.exe" %NODE_DEBUG_OPTION% "C:/.../npm-cli.js" run start

Pero parece que las opciones deben pasarse a NPM, no al script npm (antiguo) y no al nodo (último), y no hay forma de hacerlo en el diálogo, que yo sepa. Por lo tanto, añadiendo al comando package.json script.