Federico Lelli / SchoolNode.js & Express
LEZIONE 11 · Progetto e tooling

Riavvio automatico: nodemon e watch

Prima di iniziare: le parole della lezione

Watcher e riavvio
Un watcher osserva modifiche ai file. Il riavvio termina il processo precedente e ne avvia uno nuovo, rieseguendo il programma dall’inizio.
Dipendenza di sviluppo
Strumento necessario per lavorare sul progetto, ma non per il normale funzionamento del server distribuito.
Hot reload
Aggiornamento del codice o dell’interfaccia senza un completo riavvio del contesto: non coincide con il semplice riavvio di Node.

Il problema mostrato nelle prime lezioni è dover riavviare manualmente Node dopo ogni modifica. nodemon lo risolve; le versioni moderne di Node offrono anche --watch.

# soluzione senza pacchetto aggiuntivo
node --watch server.js
# alternativa con dipendenza di sviluppo
npm install --save-dev nodemon
npx nodemon server.js

Esempio aggiuntivo: nel package.json imposta "dev": "node --watch server.js", poi esegui npm run dev. Per la produzione usa normalmente uno script di avvio stabile e una gestione appropriata del processo, non un watcher di sviluppo.

Chi fa cosa, e perché

Nel testo Nodemon risolve la sequenza “salva, Ctrl+C, rilancia”. Osserva i file e riavvia il processo. Non aggiorna automaticamente una scheda del browser: devi fare una nuova richiesta per vedere il comportamento del server aggiornato.

Il riavvio ricrea variabili, array e contatori. Se inserisci una persona nell’array RAM e poi salvi un file mentre il watcher è attivo, quella persona può sparire: il nuovo processo riparte dai dati iniziali. Non è un errore di POST, ma una conseguenza dell’assenza di persistenza.

Un altro esempio guidato

// osserva.cjs — avvio: node --watch osserva.cjs
console.log('Nuovo processo:', process.pid);
console.log('Avviato:', new Date().toISOString());
setInterval(() => console.log('Ancora attivo'), 5000);

Come leggerlo e risultato atteso. Il timer ripetuto mantiene attivo il programma. Cambia il messaggio e salva: il watcher riavvia lo script, cambia il timestamp e normalmente cambia anche il PID, cioè l’identificatore del processo. Con Ctrl+C termini la sessione di osservazione.

Prova tu. Aggiungi una variabile contatore e osserva che torna al valore iniziale a ogni riavvio. Distingui il riavvio del server dal refresh del browser.

Torna all’indice ↑

Materiali didattici curati e rielaborati da Federico Lelli. Le fonti e i riferimenti specifici sono indicati nei materiali disponibili.