Skip to content

Como usar o REPL do Node.js

O comando node é aquele que usamos para executar nossos scripts Node.js:

bash
node script.js

Se executarmos o comando node sem nenhum script para executar ou sem nenhum argumento, iniciaremos uma sessão REPL:

bash
node

NOTA

REPL significa Read Evaluate Print Loop (Ler Avaliar Imprimir Loop), e é um ambiente de linguagem de programação (basicamente uma janela de console) que recebe uma única expressão como entrada do usuário e retorna o resultado para o console após a execução. A sessão REPL fornece uma maneira conveniente de testar rapidamente código JavaScript simples.

Se você tentar isso agora em seu terminal, é isso que acontece:

bash
> node
>

O comando permanece no modo inativo e espera que entremos com algo.

TIP

se você não tiver certeza de como abrir seu terminal, pesquise no Google "Como abrir o terminal no seu sistema operacional".

O REPL está esperando que entremos com algum código JavaScript, para ser mais preciso.

Comece simples e digite:

bash
> console.log('test')
test
undefined
>

O primeiro valor, test, é a saída que dissemos ao console para imprimir, então recebemos undefined, que é o valor retornado da execução de console.log(). O Node leu esta linha de código, a avaliou, imprimiu o resultado e depois voltou a esperar mais linhas de código. O Node percorrerá essas três etapas para cada parte do código que executarmos no REPL até sairmos da sessão. É aí que o REPL recebeu seu nome.

O Node imprime automaticamente o resultado de qualquer linha de código JavaScript sem a necessidade de instruí-lo a fazê-lo. Por exemplo, digite a seguinte linha e pressione Enter:

bash
> 5==5
true
>

Observe a diferença nas saídas das duas linhas acima. O Node REPL imprimiu undefined após executar console.log(), enquanto, por outro lado, ele apenas imprimiu o resultado de 5== '5'. Você precisa ter em mente que o primeiro é apenas uma instrução em JavaScript, e o último é uma expressão.

Em alguns casos, o código que você deseja testar pode precisar de várias linhas. Por exemplo, digamos que você deseja definir uma função que gera um número aleatório, na sessão REPL digite a seguinte linha e pressione Enter:

javascript
function generateRandom()
...

O REPL do Node é inteligente o suficiente para determinar que você ainda não terminou de escrever seu código, e ele entrará em um modo de várias linhas para você digitar mais código. Agora termine a definição da sua função e pressione Enter:

javascript
function generateRandom()
...return Math.random()

A variável especial:

Se após algum código você digitar _, isso imprimirá o resultado da última operação.

A tecla Seta para cima:

Se você pressionar a tecla seta para cima, terá acesso ao histórico das linhas de código anteriores executadas na sessão REPL atual e até mesmo em sessões REPL anteriores.

Comandos de ponto

O REPL possui alguns comandos especiais, todos começando com um ponto .. Eles são:

  • .help: mostra a ajuda dos comandos de ponto.
  • .editor: habilita o modo de editor, para escrever código JavaScript multilinha com facilidade. Uma vez neste modo, digite ctrl-D para executar o código que você escreveu.
  • .break: ao inserir uma expressão multilinha, inserir o comando .break interromperá a entrada posterior. O mesmo que pressionar ctrl-C.
  • .clear: redefina o contexto REPL para um objeto vazio e limpe qualquer expressão multilinha que esteja sendo inserida no momento.
  • .load: carrega um arquivo JavaScript, relativo ao diretório de trabalho atual.
  • .save: salva tudo o que você digitou na sessão REPL em um arquivo (especifique o nome do arquivo).
  • .exit: sai do repl (o mesmo que pressionar ctrl-C duas vezes).

O REPL sabe quando você está digitando uma instrução multilinha sem a necessidade de invocar .editor. Por exemplo, se você começar a digitar uma iteração como esta:

javascript
[1, 2,3].foxEach(num=>{

e você pressionar Enter, o REPL irá para uma nova linha que começa com 3 pontos, indicando que você pode agora continuar a trabalhar naquele bloco.

javascript
1... console.log (num)
2...}

Se você digitar .break no final de uma linha, o modo multilinha será interrompido e a instrução não será executada.

Executar REPL a partir de um arquivo JavaScript

Podemos importar o REPL em um arquivo JavaScript usando repl.

javascript
const repl = require('node:repl')

Usando a variável repl podemos realizar várias operações. Para iniciar o prompt de comando REPL, digite a seguinte linha:

javascript
repl.start()

Execute o arquivo na linha de comando.

bash
node repl.js

Você pode passar uma string que é exibida quando o REPL inicia. O padrão é '>' (com um espaço final), mas podemos definir um prompt personalizado.

javascript
// um prompt estilo Unix
const local = repl.start('$ ')

Você pode exibir uma mensagem ao sair do REPL

javascript
local.on('exit', () => {
  console.log('saindo do repl')
  process.exit()
})

Você pode ler mais sobre o módulo REPL na documentação do repl.