2015-12-24 15 views
25

Ho installato nodemon come pacchetto globale nel mio sistema. Funziona quando eseguo nodemon in cmd.È possibile configurare Visual Studio Code per l'avvio con nodemon

Ma quando io sto usando vscode con questo file launch.json, vscode genera questa eccezione:

richiesta lancio: runtime eseguibile XXX \ XXX \ XXX \ XXX \ nodemon non esiste

la launch.json è:

{ 
"version": "0.2.0", 
"configurations": [ 
    { 
     "name": "Launch", 
     "type": "node", 
     "request": "launch", 
     "program": "app.js", 
     "stopOnEntry": false, 
     "args": [], 
     "cwd": ".", 
     "runtimeExecutable": nodemon, 
     "runtimeArgs": [ 
      "--nolazy" 
     ], 
     "env": { 
      "NODE_ENV": "development" 
     }, 
     "externalConsole": false, 
     "preLaunchTask": "", 
     "sourceMaps": false, 
     "outDir": null 
    }, 
    { 
     "name": "Attach", 
     "type": "node", 
     "request": "attach", 
     "port": 5858 
    } 
] 
} 

quando ho cancellare il nodemin in runtimeExecutable Funziona perfettamente con il nodo

+1

VS Codice si aspetta un percorso assoluto per il "runtimeExecutable". Quindi su OS X usando "/ usr/local/bin/nodemon" farà funzionare la configurazione di avvio. Tuttavia, alla fine della sessione di debug VS Code ucciderà nodemon che non è l'intenzione di usare nodemon in primo luogo. Ecco perché la risposta sotto è un approccio molto migliore. –

risposta

0

No, al momento non è possibile. Ma sono riuscito a farlo funzionare in qualche modo usando nodemon. Lo avvio da Grunt. Ma una riga di comando equivalente dovrebbe fare lo stesso.

EDIT: Dopo una serata di test posso dire che l'approccio di sotto è ancora un po 'flakey: S, il collegamento fallisce a intermittenza ea volte i punti di interruzione vengono ignorati.

EDIT2: È inoltre possibile specificare una porta di debug non predefinito in Gruntfile usando ['--debug-brk=5860'] per nodeArgs. Sono stato anche consigliato di utilizzare --debug-brk anziché --debug. Forse questo rimuoverà l'attuale flakeyness. Tornerò e menzionerò qui se aiuta (al momento ho cambiato progetto).

Nel caso in cui questo potrebbe aiutare qualcuno sta lavorando con le impostazioni di sotto nella versione Current VS Code (ad esempio v0.10.6) su Windows 10. Ma probabilmente funzionerà anche su Mac (potrei controllare più tardi). Notare che a volte devo attivare una ricostruzione cambiando + salvando un file prima che il debugger lo prelevi.

/.vscode/launch.json

{ 
"configurations": [{ 
    "name": "Launch", 
    "outDir": null 

},{ 
    "name": "Attach", 
    "type": "node", 
    "request": "attach", 
    "port": 5858 
}] 

}

/Gruntfile.js

nodemon : { 
    dev : { 
    script : 'launcher.js' 
    }, 
    options : { 
     ignore : ['node_modules/**', 'Gruntfile.js'], 
       nodeArgs: ['--debug'], 
     env : { PORT : '4123' 
     } 
    } 
} 

Credo che la porta di debug 5858 è il default in quanto non è qui specificato (notare che è in launch.json sopra.)

+2

Ho creato questa richiesta di funzionalità VSCode: https://github.com/Microsoft/vscode/issues/2103 –

13

In codice Visual Studio creare una configurazione di lancio:

{ 
    "name": "Attach", 
    "type": "node", 
    "request": "attach", 
    "port": 5858, 
    "restart": true 
} 

nodemon eseguito dalla riga di comando: nodemon --debug server.js

ora 'Fissare' da VC e vuala.

+0

Perché la porta 5858? Se nodemon è in esecuzione su 3000. Ho provato 3000 e non fa niente (nessun errore) né sembra funzionare. @Yevgeni –

+1

Quindi ho passato il flag '--debug' a nodemon e vedo debuggin remoto su' Debugger ascolto su 127.0.0.1: 5858' ma stranamente VSCode si connette a qualcosa, ma non sembra raggiungere i punti di interruzione –

-1

Sì, è possibile! A partire da un recente aggiornamento è possibile collegare il debugger a un processo Nodemon in esecuzione. This page has more information. Cerca nodemon nella pagina per vedere le istruzioni.

+1

Non c'è niente su https: // codice.visualstudio.com/Docs/editor/debugging menzionando nodemon ... –

+0

C'era nel giugno 2016: https://web.archive.org/web/20160630150344/https://code.visualstudio.com/Docs/editor/debugging – Aron

24

In primo luogo, installare nodemon come dipendenza dev:

npm install --save-dev nodemon 

Quindi, impostare la configurazione di lancio in questo modo:

{ 
    "version": "0.2.0", 
    "configurations": [ 
    { 
     "name": "Launch with nodemon", 
     "type": "node", 
     "request": "launch", 
     "program": "${workspaceRoot}/node_modules/nodemon/bin/nodemon.js", 
     "args": ["${workspaceRoot}/index.js"], 
     "runtimeArgs": ["--nolazy"] 
    } 
    ] 
} 

i pezzi più importanti sono di proprietà program che punta al nodemon script e la proprietà args che contiene il normale script del punto di ingresso.

+0

Qualche idea su come passare i parametri a nodemon, come '--watch /server/**.ts --exec ts-node server/server.ts' per esempio? In genere è solo una grande riga in entrambi gli script package.json o cmd. 'nodemon --watch server/**/*. ts --ignore server/**/*. spec.ts --exec ts-node server/server.ts' –

+0

Non ho provato da solo, ma dovresti essere in grado di passare tutti gli argomenti necessari nell'array "args". Per l'esempio che hai citato, prova ad usare "" args ": [" --watch "," /server/**.ts "," --ignore "," server/**/*. Spec.ts "," --exec "," ts-node "," server/server.ts "]' – AdrianT

+0

qualche idea su come fare questo con babel-node/es6? questo è l'attuale comando nodemon che voglio eseguire: 'nodemon src/shim-host/index.js --exec babel-node --babel-preset-es2015' ma non funziona quando aggiungo il file pertinente a' program' e gli argomenti del nodemon a 'runtimeArgs' – devdropper87

5

Non ho potuto ottenere la risposta di @ AdrianT che funziona con il debugger allegato. Sembra che ci sia un più nuovo built-in modo sostenuto per fare questo:

  1. Aprire il menu a discesa di configurazione di avvio e selezionare "Aggiungi configurazione ..."
  2. Selezionare "Node.js: Nodemon Setup"

si aggiungerà qualcosa di simile al tuo launch.json:

{ 
     "type": "node", 
     "request": "launch", 
     "name": "nodemon", 
     "runtimeExecutable": "nodemon", 
     "program": "${workspaceRoot}/app.js", 
     "restart": true, 
     "console": "integratedTerminal", 
     "internalConsoleOptions": "neverOpen" 
} 

assicurarsi che l'impostazione del "programma" è lo script punto di ingresso corretta.

È necessario installare nodemon a livello globale per arrivare a questo lavoro (NPM installare nodemon -g) (come da the documentation)

tua app ora corre ed è possibile impostare i punti di interruzione che sarà colpito e le log della console al finestra terminale integrata.

Si noti che terminando la sessione di debug termina solo il programma di debug, non nodemon stesso. Per terminare nodemon, premi Control-C nel terminale integrato.

+1

Questa dovrebbe essere la risposta accettata in quanto è il modo corretto per farlo ora. –

+0

Se non ti piace dover eseguire un 'nodemon' globale puoi anche installare' nodemon' usando 'npm' e quindi impostare' "runtimeExecutable": "$ {workspaceFolder} /node_modules/.bin/nodemon", ' – Martin

0

Uso il plug-in Node Exec. Ti consente di eseguire e arrestare un'app di nodo in vcs premendo F8 e F9 (si applica al file aperto nell'editor). Questo potrebbe aiutare come soluzione temporanea (temporanea).

0

Il collegamento è sicuramente un'opzione facile. Al fine di fare in modo che le vostre pause codice, assicurarsi di eseguire nodemon con --inspect-brk (nodo 8+), ad esempio:

nodemon --inspect-brk src/app.js 

Dopo aver lanciato nodemon registrerà il porta aperta per le connessioni di debug:

Debugger listening on ws://127.0.0.1:9229/someUUID 

si può prendere che la porta al fine di costruire la vostra configurazione di lancio che è abbastanza semplice:

{ 
    "type": "node", 
    "request": "attach", 
    "name": "Attach", 
    "port": 9229, 
    "restart": true 
}, 
Problemi correlati