2016-05-12 27 views
13

Tenendo presente che ho solo il loosest comprensione di ciò che un debugger è davvero fare, ho bisogno di aiuto per impostare la configurazione di debug WebStorm NPM per un'applicazione express.js.`refused` collegamento in configurazione di debug WebStorm NPM

Ecco me così far-- clicco debug con le mie impostazioni come penso che dovrebbero essere (sotto):

/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 

Quindi a questo punto, l'applicazione è stata avviata e risponde al mio POST-localhost:3000 , ma non si rompe sul punto di interruzione impostato.

Guardando nel riquadro Debugger> Variabili, vedo Connecting to localhost:57617, quindi viene visualizzato un suggerimento "Connessione rifiutata" e il riquadro dice Frame is not available.

Non capisco da dove provenga il numero di porta 57617. Varia, anche se non secondo uno schema che ho ancora scoperto, tranne in quanto è sempre diverso da quello impostato nell'opzione nodo --debug=X o --debug-brk=X.

+1

57617 è un debugger del nodo porta casuale in ascolto. Questo non importa. Hai aggiunto $ NODE_DEBUG_OPTION al comando node nel tuo pacchetto.json come è scritto nel messaggio? Non è possibile eseguire il debug di script npm a meno che non ci sia questa variabile, è necessario avviare il nodo generato da npm in modalità debug – lena

+1

. (Sono stato, lo ammetto, confuso su questo come ho in qualche modo immaginato che non fosse un valore di stringa letterale, ma qualche variabile env o qualcosa del genere). Se rispondi alla domanda di seguito, accetterò la tua risposta. – Ben

risposta

14

Il messaggio di errore è davvero poco chiaro. È necessario regolare la voce dello script npm nello package.json (purtroppo). Trovato una descrizione chiara in questo post del blog: http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

vostra entrata start dovrebbe essere simile alla seguente:

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

Si potrebbe anche andare con due voci per mantenere il primo SECCO. Anche se non è davvero necessario dal momento che entrambi corrono bene dalla linea di comando. Quindi, solo per completezza amor:

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

non trovo questo metodo particolarmente pulito, imo questo è ciò che il debugger NPM dovrebbe fare per voi, senza dover manipolare il codice sorgente. Ma sembra essere l'unico modo (per ora).

+0

Sono d'accordo, sarebbe indesiderabile, ma sono stato in grado di passare $ NODE_DEBUG_OPTION allo script dalla riga di comando (configurazione di esecuzione npm), che era davvero tutto ciò che era necessario. Nessuna modifica di origine richiesta. – Ben

+0

Come lo hai fatto esattamente? Puoi specificare esattamente cosa hai inserito in "Argomenti". Niente di quello che ho provato ha avuto successo, mi deve mancare qualcosa qui. –

+4

Nella finestra Run/Debug Configurations di Webstorm, è possibile passare "$ NODE_DEBUG_OPTiON" allo script nel campo Argomenti. (Dovrebbe essere una configurazione di npm) – Ben

3

Non ho mai avuto bisogno di questo nelle versioni precedenti di Node o Webstorm. Non sono sicuro che sia cambiato richiedendo questa opzione ora.

Ho dovuto aggiungerlo nello package.json, tuttavia, aggiungendolo alla configurazione di esecuzione non funziona. E ho dovuto creare uno script separato perché si è rotto durante l'esecuzione di qualsiasi script senza il debug.

Ecco la mia package.json (Nota di Windows variabili stile% VAR%, l'uso $ VAR per sistemi Unix-like):

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

Poi quando voglio eseguire il debug Io uso una configurazione di esecuzione che chiama l'opzione di debug - perché almeno in Windows, il nodo assume letteralmente la var quando non viene sostituito.


Se si tenta di immettere la variabile in Webstorm (2016.3.3) finestra di dialogo configurazione di esecuzione:

Webstorm Run Configuration

Essa si traduce in questi comandi reali, che sono errati:

Come un argomento script:

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

Come opzione Nodo:

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

Ma sembra che le opzioni debbano essere passate a NPM, non lo script npm (precedente), e non il nodo (quest'ultimo), e non c'è modo di farlo nella finestra di dialogo, per quanto ne so. Quindi, aggiungendo al comando script package.json.

+0

Nota che potrebbe essere rilevante per 2017.1.4: https://youtrack.jetbrains.com/issue/IDEA-149344 – Nick

+0

Contro tutte le probabilità ... questo ha permesso il debug . : +1: – tiffon