web-dev-qa-db-fra.com

`Connexion refusée` dans la configuration de débogage de WebStorm NPM

Gardant à l'esprit que je n'ai que la compréhension la plus approximative de ce qu'est un débogueur vraiment, j'ai besoin d'aide pour installer la configuration de débogage WebStorm npm pour un express.js application.

Voici moi jusqu'à présent - je clique sur déboguer avec mes paramètres comme je pense qu'ils devraient être (ci-dessous):

/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

Donc, à ce stade, l'application a démarré et répond à mes POST à localhost:3000, mais ne rompt pas sur le point d'arrêt que j'ai défini.

En regardant dans le débogueur> volet Variables, je vois Connecting to localhost:57617, une info-bulle s'affiche indiquant "Connexion refusée" et le volet indique Frame is not available.

Je ne comprends pas d'où vient ce numéro de port 57617. Il varie, mais pas selon un modèle que j'ai encore découvert, sauf dans la mesure où il est toujours différent de celui que j'ai défini dans le --debug=X ou --debug-brk=X option de nœud.

18
Ben

Le message d'erreur est en effet très peu clair. Vous devez ajuster votre entrée de script npm dans le package.json (tristement). Trouvé une description claire dans cet article de blog: http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

Votre entrée start doit ressembler à ceci:

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

Vous pouvez également choisir deux entrées pour conserver la première au SEC. Bien que ce ne soit pas vraiment nécessaire car les deux fonctionnent très bien à partir de la ligne de commande. Donc, pour être complet:

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

Je ne trouve pas cette méthode particulièrement propre, c'est ce que le débogueur npm devrait faire pour vous sans avoir à manipuler le code source. Mais cela semble être le seul moyen (pour l'instant).

15
smets.kevin

Je n'ai jamais eu besoin de cela dans les versions précédentes de Node ou Webstorm. Je ne sais pas quel changement a nécessité cette option maintenant.

Je devais l'ajouter dans le package.json, cependant, l'ajouter à la configuration d'exécution ne fonctionne pas. Et j'ai dû créer un script séparé car il s'est cassé lors de l'exécution d'un script sans débogage.

Voici mon package.json ( Notez les variables de style Windows% VAR%, utilisez $ VAR pour les systèmes de type Unix ):

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

Ensuite, lorsque je veux déboguer, j'utilise une configuration d'exécution qui appelle l'option de débogage - car sous Windows au moins, le nœud prend la var littéralement lorsqu'il n'est pas remplacé.


Si vous essayez d'entrer la variable dans la boîte de dialogue de configuration d'exécution de Webstorm (2016.3.3):

Webstorm Run Configuration

Il en résulte ces commandes réelles, qui sont incorrectes:

Comme argument de script:

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

En tant qu'option Node:

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

Mais les options semblent devoir être transmises à NPM, pas au script npm (ancien), ni au nœud (dernier), et il n'y a aucun moyen de le faire dans la boîte de dialogue, à ma connaissance. Ainsi, l'ajout à la commande de script package.json.

4
Nick