Cómo usar el REPL de Node.js
El comando node
es el que usamos para ejecutar nuestros scripts de Node.js:
node script.js
Si ejecutamos el comando node
sin ningún script para ejecutar o sin ningún argumento, iniciamos una sesión REPL:
node
NOTA
REPL significa Read Evaluate Print Loop (bucle de lectura, evaluación e impresión), y es un entorno de lenguaje de programación (básicamente una ventana de consola) que toma una única expresión como entrada del usuario y devuelve el resultado a la consola después de la ejecución. La sesión REPL proporciona una forma cómoda de probar rápidamente código JavaScript simple.
Si lo pruebas ahora en tu terminal, esto es lo que ocurre:
> node
>
El comando permanece en modo inactivo y espera a que introduzcamos algo.
TIP
Si no estás seguro de cómo abrir tu terminal, busca en Google "Cómo abrir la terminal en tu-sistema-operativo".
El REPL está esperando a que introduzcamos algo de código JavaScript, para ser más precisos.
Empieza por algo sencillo e introduce:
> console.log('test')
test
undefined
>
El primer valor, test
, es la salida que le dijimos a la consola que imprimiera, luego obtenemos undefined
, que es el valor de retorno de ejecutar console.log()
. Node leyó esta línea de código, la evaluó, imprimió el resultado y luego volvió a esperar más líneas de código. Node repetirá estos tres pasos por cada fragmento de código que ejecutemos en el REPL hasta que salgamos de la sesión. De ahí es de donde el REPL obtuvo su nombre.
Node imprime automáticamente el resultado de cualquier línea de código JavaScript sin necesidad de indicarle que lo haga. Por ejemplo, escribe la siguiente línea y pulsa Intro:
> 5==5
false
>
Observa la diferencia en las salidas de las dos líneas anteriores. El REPL de Node imprimió undefined
después de ejecutar console.log()
, mientras que, por otro lado, solo imprimió el resultado de 5== '5'
. Debes tener en cuenta que la primera es solo una declaración en JavaScript, y la segunda es una expresión.
En algunos casos, el código que deseas probar puede necesitar varias líneas. Por ejemplo, digamos que deseas definir una función que genere un número aleatorio, en la sesión REPL escribe la siguiente línea y pulsa Intro:
function generateRandom()
...
El REPL de Node es lo suficientemente inteligente como para determinar que aún no has terminado de escribir tu código, y entrará en un modo de varias líneas para que puedas escribir más código. Ahora termina la definición de tu función y pulsa Intro:
function generateRandom()
...return Math.random()
La variable especial:
Si después de un código escribes _
, eso va a imprimir el resultado de la última operación.
La tecla de flecha hacia arriba:
Si presionas la tecla de flecha hacia arriba, accederás al historial de las líneas de código anteriores ejecutadas en la sesión REPL actual, e incluso en sesiones anteriores.
Comandos de punto
El REPL tiene algunos comandos especiales, todos comenzando con un punto .
. Estos son:
.help
: muestra la ayuda de los comandos de punto..editor
: habilita el modo editor, para escribir código JavaScript de varias líneas con facilidad. Una vez que estás en este modo, ingresactrl-D
para ejecutar el código que escribiste..break
: cuando ingresas una expresión de varias líneas, ingresar el comando.break
abortará la entrada posterior. Lo mismo que presionarctrl-C
..clear
: restablece el contexto REPL a un objeto vacío y borra cualquier expresión de varias líneas que se esté ingresando actualmente..load
: carga un archivo JavaScript, relativo al directorio de trabajo actual..save
: guarda todo lo que ingresaste en la sesión REPL en un archivo (especifica el nombre del archivo)..exit
: sale del REPL (lo mismo que presionarctrl-C
dos veces).
El REPL sabe cuándo estás escribiendo una declaración de varias líneas sin necesidad de invocar .editor
. Por ejemplo, si comienzas a escribir una iteración como esta:
[1, 2,3].forEach(num=>{
y presionas enter, el REPL irá a una nueva línea que comienza con 3 puntos, indicando que ahora puedes continuar trabajando en ese bloque.
1... console.log (num)
2...}
Si escribes .break
al final de una línea, el modo multilínea se detendrá y la declaración no se ejecutará.
Ejecutar REPL desde un archivo JavaScript
Podemos importar el REPL en un archivo JavaScript usando repl
.
const repl = require('node:repl')
Usando la variable repl
podemos realizar varias operaciones. Para iniciar la línea de comandos REPL, escribe la siguiente línea:
repl.start()
Ejecuta el archivo en la línea de comandos.
node repl.js
Puedes pasar una cadena que se muestre cuando se inicia el REPL. El valor predeterminado es '>' (con un espacio al final), pero podemos definir un mensaje personalizado.
// un mensaje estilo Unix
const local = repl.start('$ ')
Puedes mostrar un mensaje al salir del REPL
local.on('exit', () => {
console.log('saliendo de repl')
process.exit()
})
Puedes leer más sobre el módulo REPL en la documentación de repl.