2012-03-06 21 views
6

Estoy evaluando el marco Geddy MVC para node.js y estoy viendo un problema extraño: ninguno de mis puntos de interrupción se golpean al depurar.No se tocan puntos de interrupción con Geddy

Estoy usando WebStorm para iniciar node.js en modo de depuración.

I no sabe cómo hacer Geddy se inicia en modo de depuración con el comando CLI, así que tengo un archivo de programa previo que yo uso que tiene este aspecto:

console.log("Starting server...") 
var geddy = require("geddy/bin/cli") 
console.log("Server started.") 

puse un punto de interrupción en las tres líneas y sólo se golpea el último console.log, por lo que al menos sé que los puntos de interrupción y la depuración funcionan correctamente.

Geddy internamente require() son mis controladores que también tienen puntos de interrupción establecidos en varios lugares. Nunca se golpean, pero los controladores funcionan correctamente y las solicitudes HTTP también se sirven correctamente.

¿Hay alguna razón por la cual los puntos de interrupción no se verán afectados en Geddy? ¿Hay algo más que pueda hacer?

+0

Quizás intente agregar 'depurador;' a su fuente, en lugar de 'console.log'. (o justo antes) ¿Eso cambia algo para usted? –

+0

No. Creo que el problema puede estar relacionado con el hecho de que Geddy usa 'cluster' internamente, lo que genera nuevos procesos, que el depurador no está conectado. Estoy tratando de confirmar esto. –

+0

Estoy experimentando lo mismo ... ¿Alguna actualización por casualidad? – ewindsor

Respuesta

1

No he podido verificar esto, pero creo que el problema se debe al hecho de que cluster genera nuevos procesos pero el depurador no los conoce. No he encontrado una forma de adjuntar el depurador a los nuevos procesos, y ni siquiera estoy seguro de si se pueden iniciar con el puerto de depuración abierto.

Geddy usa cluster por lo que hereda este problema.

Este hilo menciona una posible solución: (How do I enable --debug for node.js when running GeddyJS) pero esto no me ayudó.

1

Geddy actualmente no es compatible con la depuración, pero nos encantaría agregar eso como una función.

+0

Esta respuesta ahora está obsoleta, echa un vistazo a la respuesta de @miguel anterior. – Techwraith

1

Para responder a la pregunta específicamente para JetBrains IntelliJ WebStorm o (con el plugin Node.js) Depuración:

En resumen, configurar su aplicación como si se va a desplegar en Heroku o Nodejitsu.

package.json

{ 
    "name": "geddy_todo", 
    "version": "0.0.1", 
    "dependencies": { 
    "geddy": "0.6.x" 
    }, 
    "engines": { 
    "node": "0.8.x", 
    "npm": "1.1.x" 
    } 
} 

A continuación, tiene dos opciones

Opción 1. Crear una app.js que corre geddy.

app.js

var geddy = require('geddy'); 

geddy.start({ 
    environment: process.env.GEDDY_ENVIRONMENT || 'production' 
}); 

En WebStorm/IntelliJ, en su configuración Ejecutar/Depurar para la aplicación Node.js asegúrese de agregar una variable GEDDY_ENVIRONMENT el medio ambiente y configurarlo para el 'desarrollo' o 'prueba' si desea ejecutar sus pruebas.

Opción 2 invocar el cliente geddy directamente

@MiguelMadero mencionó esta idea en los comentarios. Establezca WS/IJ para ejecutar lo siguiente

path/to/geddy/bin/cli.js 
+0

No es necesario hacer esto, simple en lugar de ejecutar geddy para comenzar a ejecutar la ruta del nodo/a/geddy/bin/cli.js y establecer los indicadores de depuración habituales. –

+0

Pero funciona, ¿por qué la gente lo votó? –

+1

No voté. Creo que es una buena respuesta. –

Cuestiones relacionadas