2014-04-28 3 views
66

Sto provando a eseguire il debug della mia app nodejs utilizzando node-inspector. Ma Google Chrome non mostra il codice.debugging node.js con node-inspector

Sto utilizzando il seguente,

Node.js: v0.10.26

espresso: 4.0.0

Ispettore Node: v0.7.3 versione

Google Chrome: 34.0 .1847.131

Questo è quello che sto facendo per avviare il debugger ..

$ node-inspector 
Node Inspector v0.7.3 
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging. 

In un'altra console,

$ node --debug app.js 
debugger listening on port 5858 
$ 

poi ha iniziato Google Chrome e andò a

http://127.0.0.1:8080/debug?port=5858 

Si apre il nodo-ispettore ma senza finestre code..all sono vuote.

notato che non sto 'Server Express in ascolto sulla porta 3000'

provato tutti come da node-inspector fails to connect to node ma senza fortuna

Non poteva capire cosa mi manca. Sarebbe bello avere qualche suggerimento ... così posso eseguire il debug delle mie app Node.js in Google Chrome.

+3

1. Provare a eseguire node-inspector con l'opzione --no-preload. –

+1

2. Controlla la console di DevTools di Chrome: ci sono errori? –

risposta

121

Provare a eseguire node --debug-brk app.js anziché solo --debug. L'applicazione potrebbe non essere in pausa prima che l'ispettore del nodo si agganci al processo del nodo. L'utilizzo di --debug-brk forzerà il nodo a rompere sulla prima riga della tua app e attenderà che un debugger si colleghi al processo. Il caricamento dell'interfaccia web di nodo-ispettore è ciò che fa sì che node-inspector si colleghi al processo del nodo; è per questo che includi la porta di debug del nodo nella stringa di query (localhost: 8080/debug? port = 5858). Stai dicendo a ispettore del nodo quale porta dovrebbe raggiungere e attaccare.

Ecco una gif animata che ho messo insieme mostrando un'installazione completa e l'esecuzione di node-inspector.

Nel gif Io uso la bandiera --debug perché non sto debug di codice che passa proprio in fase di avvio. Sto eseguendo il debug all'interno di un gestore di richieste, che si attiva solo quando viene richiesta la pagina. Pertanto, l'aggiornamento della pagina fa sì che node-inspector si interrompa su tale linea.

Ho anche realizzato un tutorial YouTube di 15 minuti qualche tempo fa.

http://youtu.be/03qGA-GJXjI

Mi auguro che aiuta!

+1

Grazie Alex, ho controllato il tuo video youtube prima..molto informativo Grazie. --debug-brk ha fatto il trucco per me..come mai ... quando ho inserito un breakpoint in uno dei miei percorsi. Nel mio caso, sto sperimentando con cheerio + richiesta di raschiare un sito web. Ho creato un percorso, diciamo scrape.js Sto sperando di eseguire il debug di questo file ... ma non sta colpendo il punto di interruzione..am mi manca qualcosa? – genwip

+0

Non ne sono sicuro. È difficile sapere senza un esempio di codice. Puoi incollare tutto il codice che viene eseguito fino al punto in cui tale rotta è dichiarata in un [gist] (http://gist.github.com) insieme all'URL che stai navigando per attivare il gestore della richiesta? – Chev

+1

@AlexFord: come sei riuscito a creare questa gif? Penso che sia davvero fantastico e può essere molto utile – SharpCoder

0

enter image description here

Sulla sinistra del Nodo ispettore, scheda "Sorgenti", c'è "una scatola con un triangolo in esso" - dice l'evidenziazione della "Mostra Navigator". (Vedi nella foto sopra). Aprilo per trovare i file che vuoi eseguire il debug e inserisci un punto di interruzione sul codice che deve ancora essere eseguito.

Inoltre, se si desidera eseguire il debug del codice eseguito sul nodo di partenza, è necessario utilizzare l'opzione --debug-brk all'avvio. Quindi, in Node Inspector, dovrai avviare l'app (F8 per eseguire tutto). Avrai bisogno di questa opzione se vuoi eseguire il debug di tutto il codice di inizializzazione, come avviare un browser web.

+0

Grazie a Clay, --debug-brk sembra aver funzionato.non funzionava inizialmente però..ma dopo aver provato alcune volte..it ha fatto .. – genwip

22

node-inspector per impostazione predefinita tenta di precaricare tutto il codice prima di avviare la finestra di debug. Ho avuto istanze, l'ispettore dei nodi si blocca per sempre a causa di questo pre-caricamento. Fortunatamente le versioni più recenti hanno un'opzione per fermare il pre-caricamento, rendendo così l'ispettore più veloce da caricare.

Prova node-inspector --no-preload

+0

Vorrei poterti dare più voti per te ^^ – destan

+0

Molto utile! Anch'io ho avuto questo stupido problema con l'impiccagione quando preferisco semplicemente centrare subito i breakpoint. Grazie per il consiglio! – Chev

+0

Questo ha risolto il mio problema! –

6

standard remoto il debug è suddiviso interamente in nodo 6.5. E 'sostituito però da una nuova funzione interna nodo

$ node --inspect --debug-brk build/server/server.js 
Debugger listening on port 9229. 
Warning: This is an experimental feature and could change at any time. 
To start debugging, open the following URL in Chrome: 
    chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node 
Debugger attached. 

vedi qui - http://arveknudsen.com/?p=346%3Fpage_id%3D346&print=pdf - per ulteriori informazioni

+1

Hai appena salvato la mia giornata! Non c'è più bisogno di ispettore dei nodi. –

+0

hmm, nel mio caso mi sta dando un URL che inizia con "ws: //" ... la macchina è un server senza testa, quindi ho passato l'opzione host: port, ma non riesco ancora ad aprire il "ws:// "URL nella mia istanza locale di Chrome – Michael

0

node-debug --no-preload app.js

Questo ciò che funziona per me. Accoriding to this:

Lo script viene eseguito troppo velocemente per collegare il debugger.

Il processo di debug deve essere avviato con --debug-brk, in questo modo lo script viene messo in pausa sulla prima riga.

Nota: node-debug aggiunge questa opzione per impostazione predefinita.