Como usar o REPL do Node.js
O comando node
é aquele que usamos para executar nossos scripts Node.js:
node script.js
Se executarmos o comando node
sem nenhum script para executar ou sem nenhum argumento, iniciaremos uma sessão REPL:
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:
> 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:
> 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:
> 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:
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:
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, digitectrl-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 pressionarctrl-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 pressionarctrl-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:
[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.
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
.
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:
repl.start()
Execute o arquivo na linha de comando.
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.
// um prompt estilo Unix
const local = repl.start('$ ')
Você pode exibir uma mensagem ao sair do REPL
local.on('exit', () => {
console.log('saindo do repl')
process.exit()
})
Você pode ler mais sobre o módulo REPL na documentação do repl.