Como executar

Como executar JavaScript

Trilha de JavaScript →

JavaScript roda no navegador e, fora dele, no Node.js. As lições usam o Node, que roda arquivos .js direto do terminal. Vai estudar TypeScript? A instalação abaixo serve também; depois, siga o guia de TypeScript.

Testar sem instalar nada

Todo navegador tem um console de JavaScript: aperte F12, abra a aba Console, cole o código e aperte Enter. Serve para exemplos que só usam console.log e a linguagem em si. Os que leem arquivos ou usam módulos do Node precisam do Node instalado.

Instalar o Node.js

Baixe o instalador LTS no site oficial do Node.js. O Node executa os programas; o npm, que vem junto, instala pacotes JavaScript. Você também pode instalar pelo terminal, conforme o sistema abaixo.

Windows: instalador ou WinGet

No site, escolha Windows Installer (.msi) e mantenha os componentes padrão, incluindo npm package manager e Add to PATH. Ou abra o PowerShell e escolha um dos comandos:

# LTS: versão com suporte de longo prazo, recomendada para começar
winget install --id OpenJS.NodeJS.LTS --exact --source winget --scope machine

# Current: versão mais recente, com novidades antes da LTS
winget install --id OpenJS.NodeJS --exact --source winget --scope machine

O instalador pode pedir autorização de administrador. O escopo machine instala para todos os usuários; no Windows de 64 bits, a pasta padrão é C:\Program Files\nodejs. Uma instalação anterior ou um destino personalizado pode mudar esse caminho. O npm e o npx vêm junto no instalador padrão. Fontes: pacotes WinGet do Node e instalador oficial.

Feche e abra o terminal, depois confira as versões e os caminhos:

node --version
npm.cmd --version
where.exe node
where.exe npm

npm.cmd evita o bloqueio de npm.ps1 pela política de execução do PowerShell. No Prompt de Comando, também pode usar npm --version.

Linux: instalar para seu usuário com nvm

O nvm permite instalar e trocar versões do Node. Em Debian/Ubuntu, prepare o download e instale o nvm no Bash:

sudo apt-get update
sudo apt-get install -y curl ca-certificates
curl -fsSL --connect-timeout 10 --max-time 60 https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh -o /tmp/nvm-install.sh
less /tmp/nvm-install.sh
bash /tmp/nvm-install.sh

Confira o script no less e pressione q para sair antes de executar o próximo comando. Abra outro terminal Bash e instale a LTS:

nvm install --lts
nvm alias default 'lts/*'
node --version
npm --version
command -v node
command -v npm

O npm vem com o Node. Por padrão, os arquivos ficam em ~/.nvm/versions/node/<versão>/bin; com XDG_CONFIG_HOME configurado, o nvm pode usar outra pasta. A instalação é por usuário e o nvm é carregado em cada shell. Se aparecer nvm: command not found, abra outro terminal ou carregue o arquivo de configuração que o instalador atualizou, como source ~/.bashrc no Bash.

Linux: instalar para todos os usuários (Debian/Ubuntu)

Para disponibilizar Node também a outros usuários e serviços, use o pacote da NodeSource. Este procedimento configura um repositório do sistema e instala a linha LTS 24:

sudo apt-get update
sudo apt-get install -y curl ca-certificates
curl -fsSL --connect-timeout 10 --max-time 60 https://deb.nodesource.com/setup_24.x -o /tmp/nodesource_setup.sh
less /tmp/nodesource_setup.sh
sudo bash /tmp/nodesource_setup.sh
sudo apt-get install -y nodejs
/usr/bin/node --version
/usr/bin/npm --version
dpkg -L nodejs

Confira o script antes de executá-lo como administrador. O pacote da NodeSource inclui npm; dpkg -L nodejs lista os arquivos instalados, incluindo os comandos em /usr/bin. Isso difere de npm install -g, que instala pacotes npm no prefixo da instalação atual e não torna um Node do nvm disponível a todos. Se já usa nvm, command -v node pode continuar apontando para ele no seu terminal; os caminhos absolutos acima conferem a instalação do sistema.

Executar um arquivo

Exemplo básico

Salve como basic.js. A variável guarda um nome e console.log mostra a mensagem. Este exemplo também funciona no console do navegador.

const userName = 'Ana';
console.log(`Olá, ${userName}!`);

Na pasta do arquivo, execute:

node basic.js

Saída esperada:

Olá, Ana!

Jogar adivinhe o número

Salve o programa como main.js. O programa sorteia um número de 1 a 10 e dá três tentativas. Math.random sorteia, readline lê o terminal e if escolhe a dica. As respostas mudam a cada partida. O exemplo usa módulos do Node e não roda no console do navegador.

import { createInterface } from 'node:readline/promises';
import { stdin, stdout } from 'node:process';

const terminal = createInterface({ input: stdin, output: stdout });
const secret = Math.floor(Math.random() * 10) + 1;
let won = false;

try {
  console.log('Adivinhe o número de 1 a 10. Você tem 3 tentativas.');
  for (let attempt = 1; attempt <= 3; attempt++) {
    console.log(`Tentativa ${attempt}:`);
    const answer = await terminal.question('');
    const guess = Number(answer);
    if (!/^\d+$/.test(answer.trim()) || !Number.isInteger(guess) || guess < 1 || guess > 10) {
      console.log('Digite um inteiro de 1 a 10. Esta tentativa foi consumida.');
      continue;
    }
    if (guess === secret) {
      console.log('Acertou!');
      won = true;
      break;
    }
    console.log(guess < secret ? 'O número é maior.' : 'O número é menor.');
  }
  if (!won) console.log(`Fim do jogo. O número era ${secret}.`);
} catch {
  console.error('Não foi possível ler a resposta.');
  process.exitCode = 1;
} finally {
  terminal.close();
}

Na pasta do arquivo, execute:

node main.js

Uma interação no terminal será:

Adivinhe o número de 1 a 10. Você tem 3 tentativas.
Tentativa 1:
5
O número é maior.
Tentativa 2:
8
Acertou!

As linhas com os valores das respostas são digitadas por você. Pressione Enter após cada resposta. As demais linhas são a saída do programa.

Quando o exemplo é só um trecho

Salve as linhas num arquivo e rode com node. Se o trecho usa algo definido em outra parte da lição (uma função, um objeto), copie essa parte para o mesmo arquivo.

Erros comuns

  • Cannot use import statement outside a module: aparece em versões antigas do Node. Atualize para a LTS ou salve o arquivo como main.mjs.
  • ReferenceError: x is not defined: o nome não foi declarado ou está escrito diferente (maiúsculas contam).
  • Cannot access 'x' before initialization: a variável let/const foi usada antes da linha que a declara.
  • document is not defined: o código é de navegador. Rode no console do navegador, não no Node.