📢 Nuovo Corso Laravel API disponibile!

Come usare il REPL di Node.js

Il comando node è quello che usiamo per eseguire i nostri script Node.js:

Terminal window
node script.js

Se eseguiamo il comando node senza alcun script da eseguire o senza argomenti, avviamo una sessione REPL:

Terminal window
node

Nota: REPL sta per Read Evaluate Print Loop ed è un ambiente di linguaggio di programmazione (essenzialmente una finestra della console) che prende una singola espressione come input dell’utente e restituisce il risultato alla console dopo l’esecuzione. La sessione REPL fornisce un modo comodo per testare rapidamente il codice JavaScript semplice.

Se provi ora nel tuo terminale, questo è ciò che succede:

Terminal window
node
>

Il comando rimane in modalità idle e aspetta che inseriamo qualcosa.

Suggerimento: se non sei sicuro su come aprire il tuo terminale, cerca “Come aprire il terminale nel tuo-sistema-operativo”.

Il REPL sta aspettando che inseriamo del codice JavaScript, per essere più precisi.

Inizia in modo semplice e inserisci:

Terminal window
> console.log('test')

Il primo valore, test, è l’output che abbiamo detto alla console di stampare, quindi otteniamo undefined, che è il valore restituito dall’esecuzione di console.log(). Node ha letto questa riga di codice, l’ha valutata, ha stampato il risultato e poi è tornato in attesa di ulteriori righe di codice. Node loopa attraverso questi tre passaggi per ogni pezzo di codice che eseguiamo nel REPL fino a quando non usciamo dalla sessione. Da qui il nome REPL.

Node stampa automaticamente il risultato di qualsiasi riga di codice JavaScript senza la necessità di istruirlo a farlo. Ad esempio, digita la seguente riga e premi invio:

Terminal window
> 5 === '5'

Nota la differenza nei risultati delle due righe sopra. Il REPL di Node ha stampato undefined dopo aver eseguito console.log(), mentre, d’altra parte, ha stampato direttamente il risultato di 5 === '5'. Devi tenere presente che il primo è solo uno statement in JavaScript, mentre il secondo è un’espressione.

In alcuni casi, il codice che vuoi testare potrebbe richiedere più righe. Ad esempio, diciamo che vuoi definire una funzione che genera un numero casuale, nella sessione REPL digita la seguente riga e premi invio:

Terminal window
function generateRandom() {

Il REPL di Node è abbastanza intelligente da capire che non hai finito di scrivere il tuo codice e passerà alla modalità multi-linea per permetterti di inserire più codice. Ora completa la definizione della tua funzione e premi invio:

Terminal window
function generateRandom() {
...return Math.random()
}

La variabile speciale _

Se dopo del codice digiti _, verrà stampato il risultato dell’ultima operazione.

Il tasto freccia su

Se premi il tasto freccia su, avrai accesso alla cronologia delle righe di codice precedenti eseguite nella sessione attuale e anche in sessioni REPL precedenti.

Comandi con il punto .

Il REPL ha alcuni comandi speciali, tutti che iniziano con un punto .. Sono:

  • .help: mostra l’aiuto dei comandi con il punto.
  • .editor: abilita la modalità editor, per scrivere codice JavaScript su più righe con facilità. Una volta in questa modalità, inserisci ctrl-D per eseguire il codice che hai scritto.
  • .break: durante l’inserimento di un’espressione su più righe, inserendo il comando .break si interromperà ulteriore input. Lo stesso risultato di premere ctrl-C.
  • .clear: resetta il contesto REPL a un oggetto vuoto e cancella qualsiasi espressione su più righe attualmente in inserimento.
  • .load: carica un file JavaScript, relativo alla directory di lavoro corrente.
  • .save: salva tutto ciò che hai inserito nella sessione REPL su un file (specificare il nome del file).
  • .exit: esce dal REPL (lo stesso risultato di premere ctrl-C due volte).

Il REPL capisce quando stai digitando uno statement su più righe senza la necessità di invocare .editor.

Ad esempio, se inizi a digitare un’iterazione in questo modo:

Terminal window
[1, 2, 3].forEach(num => {

e premi invio, il REPL andrà su una nuova riga che inizia con 3 punti, indicando che ora puoi continuare a lavorare su quel blocco.

Terminal window
... console.log(num)
... })

Se digiti .break alla fine di una riga, la modalità multilinea si interromperà e lo statement non verrà eseguito.

Esecuzione del REPL da un file JavaScript

Possiamo importare il REPL in un file JavaScript utilizzando repl.

const repl = require("node:repl");

Utilizzando la variabile repl, possiamo eseguire varie operazioni. Per avviare il prompt dei comandi REPL, digita la seguente riga:

repl.start();

Esegui il file nella riga di comando.

Terminal window
node repl.js
Terminal window
> const n = 10

Puoi passare una stringa che viene mostrata quando il REPL viene avviato. Il valore predefinito è ’> ’ (con uno spazio alla fine), ma possiamo definire un prompt personalizzato.

// un prompt in stile Unix
const local = repl.start("$ ");

Puoi visualizzare un messaggio durante l’uscita dal REPL.

local.on("exit", () => {
console.log("Uscita dal REPL");
process.exit();
});