2012-03-06 4 views
6

J'évalue le framework Geddy MVC pour node.js et je vois un problème étrange - aucun de mes points d'arrêt n'est touché lors du débogage. J'utilise WebStorm pour lancer node.js en mode débogage.Aucun point d'arrêt n'est atteint avec Geddy

Je ne sais pas comment faire Geddy démarrer en mode débogage en utilisant la commande CLI donc j'ai un fichier bootstrapper que j'utilise qui ressemble à ceci:

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

Je mis un point d'arrêt sur les trois lignes et seulement le dernier console.log est touché, donc au moins je sais que les points d'arrêt et le débogage fonctionnent correctement. Geddy interne require() est mes contrôleurs qui ont également des points d'arrêt définis dans plusieurs endroits. Ceux-ci ne sont jamais touchés, mais les contrôleurs fonctionnent correctement et les requêtes HTTP sont correctement servies.

Y a-t-il une raison pour laquelle les points d'arrêt ne seront pas touchés dans Geddy? Y a-t-il quelque chose de plus que je puisse faire?

+0

Essayez peut-être d'ajouter 'debugger;' à votre source, à la place de 'console.log'. (ou juste avant) Est-ce que ça change quelque chose pour vous? –

+0

Non. Je pense que le problème peut être lié au fait que Geddy utilise 'cluster' en interne ce qui engendre de nouveaux processus, auxquels le débogueur n'est pas connecté. Im essayant de confirmer ceci. –

+0

Je vis la même chose ... des mises à jour par hasard? – ewindsor

Répondre

1

J'ai été incapable de vérifier cela, mais je crois que le problème est dû au fait que cluster engendre de nouveaux processus mais le débogueur ne les connaît pas. Je n'ai pas trouvé un moyen d'attacher le débogueur aux nouveaux processus, et je ne sais même pas s'ils peuvent être démarrés avec le port de débogage ouvert.

Geddy utilise cluster afin qu'il hérite de ce problème.

Ce fil mentionne une solution possible: (How do I enable --debug for node.js when running GeddyJS) mais cela ne m'a pas aidé.

1

Geddy ne prend pas actuellement en charge le débogage, mais nous aimerions l'ajouter en tant que fonctionnalité.

+0

Cette réponse est maintenant obsolète, consultez la réponse de @ miguel ci-dessus. – Techwraith

3

Il y a un Debugging WikiPage avec quelques informations sur la façon de déboguer geddy.

1

Pour répondre à la question spécifiquement pour JetBrains WebStorm ou IntelliJ (avec le plugin Node.js) mise au point:

En bref, configurez votre application comme si vous allez déployer sur Heroku ou Nodejitsu.

package.json

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

Ensuite, vous avez deux options

Option 1. Créer un app.js qui court geddy.

app.js

var geddy = require('geddy'); 

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

Dans WebStorm/IntelliJ, dans votre Run/Configuration de débogage pour l'application Node.js assurez-vous d'ajouter une GEDDY_ENVIRONMENT variable de l'environnement et le mettre à 'développement' ou 'test' si vous voulez exécuter vos tests.

Option 2 invoquons le client geddy directement

@MiguelMadero mentionné cette idée dans les commentaires. Définissez WS/IJ pour exécuter les opérations suivantes

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

Il n'y a pas besoin de faire ceci, simple au lieu d'exécuter geddy pour commencer à exécuter le chemin du noeud/vers/geddy/bin/cli.js et définir les drapeaux de débogage habituels. –

+0

Mais cela fonctionne donc pourquoi les gens ont-ils voté? –

+1

Je n'ai pas voté bas. Je pense que c'est une bonne réponse. –

Questions connexes