15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
09.10.2024

Como Instalar e Configurar Node.js e NPM no Windows

Node.js é um runtime JavaScript de código aberto e multiplataforma, construído sobre o motor V8 do Chrome, que executa código JavaScript fora de um navegador. NPM (Node Package Manager) é o gestor de pacotes padrão incluído com o Node.js, fornecendo acesso a mais de dois milhões de pacotes reutilizáveis. Juntos, formam a cadeia de ferramentas fundamental para construir aplicações do lado do servidor, ferramentas CLI, REST APIs e projetos JavaScript full-stack no Windows.

Este guia abrange o fluxo de trabalho completo de instalação, verificação, configuração e primeira aplicação para Node.js e NPM no Windows — incluindo gestão de versões, resolução de problemas de PATH, âmbito de pacotes global vs. local e considerações de nível de produção que a maioria dos tutoriais omite.

Escolher a Versão Correta do Node.js Antes de Instalar

O calendário de lançamentos do Node.js segue um ritmo previsível que afeta diretamente a sua escolha:

Tipo de LançamentoEstabilidadeCaso de UsoJanela de Suporte
**LTS (Suporte de Longa Duração)**AltaCargas de trabalho de produção, ambientes de equipa30 meses
**Current**ModeradaAcesso às funcionalidades mais recentes do motor V86 meses
**Nightly / RC**ExperimentalContribuidores principais, testes de pontaSem garantia

As versões LTS têm números de versão principal pares (por exemplo, 20.x, 22.x) e recebem patches críticos de segurança durante 30 meses. Os lançamentos Current têm números de versão principal ímpares e transitam para o estado LTS após seis meses se cumprirem os critérios de estabilidade.

Para a maioria dos programadores e implementações em servidor — incluindo aplicações alojadas em VPS Hosting — LTS é a escolha correta. O ramo Current é adequado apenas quando necessita especificamente de uma funcionalidade do V8 ou de uma API do Node.js que ainda não chegou à linha LTS ativa.

NVM para Windows: A Alternativa Profissional à Instalação Direta

Antes de prosseguir com o instalador MSI, considere se precisa do nvm-for-windows (Node Version Manager para Windows). O instalador direto vincula o seu sistema a uma única versão do Node.js. O NVM permite instalar múltiplas versões lado a lado e alternar entre elas por projeto — fundamental quando se mantêm bases de código legadas a par de versões modernas.

Instale o nvm-for-windows a partir da sua página oficial de lançamentos no GitHub e, em seguida, utilize:

“`

nvm install 20.14.0

nvm use 20.14.0

nvm list

“`

Se estiver a gerir um único projeto ou a aprender Node.js pela primeira vez, o instalador MSI é suficiente. Para ambientes profissionais, o NVM é fortemente recomendado.

Passo 1: Descarregar o Instalador do Node.js

  1. Aceda ao site oficial do Node.js em nodejs.org.
  2. Selecione o separador LTS e descarregue o Instalador para Windows (`.msi`) para a sua arquitetura. Quase todas as máquinas Windows modernas são de 64 bits (`node-v20.x.x-x64.msi`). As versões ARM64 estão disponíveis para dispositivos Windows on ARM.
  3. Verifique o checksum SHA-256 do ficheiro descarregado em relação aos valores publicados na página de downloads do Node.js antes de executar o instalador. Este passo é inegociável em qualquer ambiente com consciência de segurança.

Para verificar o checksum no PowerShell:

“`powershell

Get-FileHash .node-v20.14.0-x64.msi -Algorithm SHA256

“`

Compare o resultado com o hash publicado. Uma discrepância indica um download corrompido ou adulterado.

Passo 2: Instalar o Node.js e o NPM

  1. Faça duplo clique no ficheiro `.msi` descarregado para iniciar o Assistente de Configuração.
  2. Clique em Seguinte no ecrã de boas-vindas.
  3. Aceite o Contrato de Licença do Utilizador Final e clique em Seguinte.
  4. O caminho de instalação predefinido é `C:Program Filesnodejs`. A menos que tenha uma razão específica para o alterar (por exemplo, uma unidade que não seja do sistema para gestão de espaço em disco), deixe-o como está.
  5. No ecrã de Configuração Personalizada, confirme que o npm package manager está selecionado. Está ativado por predefinição.
  6. No ecrã Ferramentas para Módulos Nativos, verá uma opção para instalar automaticamente o Chocolatey, Python e as Visual Studio Build Tools. Marque esta caixa se antecipar a instalação de pacotes NPM que incluam addons nativos em C++ (por exemplo, pacotes dependentes de `bcrypt`, `sharp`, `node-gyp`). Este passo instala vários gigabytes de ferramentas — ignore-o se apenas precisar de pacotes JavaScript puros.
  7. Clique em Instalar e depois em Concluir.

O instalador regista automaticamente `node.exe` e `npm.cmd` na variável de ambiente `PATH` do sistema em `C:Program Filesnodejs`.

O Que o Instalador Realmente Faz ao Seu Sistema

Compreender os efeitos secundários evita dores de cabeça futuras na depuração:

  • Adiciona `C:Program Filesnodejs` ao PATH do Sistema (disponível para todos os utilizadores).
  • Cria `C:Users<username>AppDataRoamingnpm` como prefixo de pacote global predefinido.
  • Regista o Node.js no registo do Windows em `HKLMSOFTWARENode.js`.
  • Instala `npx` (o executor de pacotes NPM) juntamente com `npm`.

Passo 3: Verificar a Instalação

Abra uma nova janela de Linha de Comandos ou PowerShell. O qualificador “nova” é importante — as sessões de terminal existentes armazenam em cache o PATH antigo e não refletirão as alterações do instalador.

“`

node -v

“`

Resultado esperado: `v20.14.0` (ou a sua versão instalada)

“`

npm -v

“`

Resultado esperado: `10.x.x`

“`

npx -v

“`

Resultado esperado: corresponde ou está próximo da versão do npm

Se `node` não for reconhecido, o PATH não foi atualizado corretamente. Corrija-o manualmente:

  1. Abra Propriedades do Sistema > Avançadas > Variáveis de Ambiente.
  2. Em Variáveis do sistema, localize `Path` e clique em Editar.
  3. Adicione `C:Program Filesnodejs` se estiver ausente.
  4. Clique em OK, feche todas as janelas de terminal e reabra.

Diagnosticar Problemas Comuns Após a Instalação

Problema: `npm` é reconhecido mas `node` não é (ou vice-versa).

Causa: Uma entrada de PATH parcial ou uma instalação conflituante do Chocolatey ou de uma configuração NVM anterior.

Correção: Execute `where node` e `where npm` para identificar quais os binários que estão a ser resolvidos. Remova as entradas obsoletas.

Problema: Erros de permissão `EACCES` ao executar `npm install -g`.

Causa: O diretório de prefixo global não tem permissões de escrita para o utilizador atual.

Correção: Altere o prefixo global para um diretório pertencente ao utilizador (abordado no Passo 5).

Problema: `node` abre a Microsoft Store em vez de executar o Node.js.

Causa: O Windows 10/11 inclui um Alias de Execução de Aplicação para `node` que redireciona para a Store.

Correção: Vá a Definições > Aplicações > Aliases de execução de aplicações e desative os aliases para `python.exe` e `node.exe` (se presentes).

Passo 4: Atualizar o NPM para a Versão Mais Recente

A versão do NPM incluída com um instalador do Node.js está tipicamente uma ou duas versões menores atrás do lançamento atual. Atualize-a imediatamente após a instalação:

“`

npm install -g npm@latest

“`

O sinalizador `-g` instala o pacote no diretório de prefixo global, tornando-o disponível em todo o sistema. Após a atualização, verifique novamente:

“`

npm -v

“`

Caso extremo importante: No Windows, atualizar o NPM globalmente pode ocasionalmente deixar um `npm.cmd` obsoleto em `C:Program Filesnodejs` apontando para a versão antiga enquanto a nova versão está instalada em `C:Users<username>AppDataRoamingnpm`. Se `npm -v` ainda mostrar a versão antiga após a atualização, verifique qual o binário que aparece primeiro no PATH:

“`

where npm

“`

O caminho em `AppDataRoamingnpm` deve aparecer antes de `C:Program Filesnodejs` no resultado. Se não for o caso, reordene as entradas do PATH em conformidade.

Passo 5: Configurar o NPM para o Seu Ambiente

A configuração do NPM é armazenada num ficheiro `.npmrc`, que pode existir em três níveis: por projeto, por utilizador (`C:Users<username>.npmrc`) e global (`C:Program Filesnodejsnode_modulesnpmnpmrc`). As definições por projeto substituem as definições por utilizador, que substituem as definições globais.

Alterar o Prefixo de Pacote Global

O prefixo global predefinido (`AppDataRoamingnpm`) funciona para a maioria dos utilizadores, mas em servidores partilhados ou quando se aplicam quotas de disco, pode querer redirecioná-lo:

“`

npm config set prefix "D:NodeGlobal"

“`

Após alterar o prefixo, adicione o novo subdiretório `bin` ao seu PATH:

“`

setx PATH "%PATH%;D:NodeGlobal"

“`

Configurar um Registo Privado ou Espelho

Ambientes corporativos e servidores isolados frequentemente utilizam um registo NPM privado (Verdaccio, Nexus, Artifactory):

“`

npm config set registry "https://your-private-registry.example.com/"

“`

Para autenticar num registo privado:

“`

npm login –registry=https://your-private-registry.example.com/

“`

Apenas para pacotes com âmbito (por exemplo, `@mycompany/*`), pode encaminhar apenas esse âmbito para um registo privado, mantendo o registo público intacto:

“`

npm config set @mycompany:registry "https://your-private-registry.example.com/"

“`

Configurar um Proxy HTTP

Se a sua máquina Windows estiver atrás de um proxy corporativo:

“`

npm config set proxy "http://proxy.company.com:8080"

npm config set https-proxy "http://proxy.company.com:8080"

“`

Auditar Todas as Definições Atuais

“`

npm config list

npm config list –json

“`

O sinalizador `–json` produz configuração legível por máquina, útil para diagnósticos de scripts e pipelines CI/CD.

Referência de Configuração NPM Útil

Chave de ConfiguraçãoValor PredefinidoFinalidade
`prefix``%APPDATA%npm`Localização de instalação de pacotes globais
`registry``https://registry.npmjs.org/`Registo de origem de pacotes
`cache``%APPDATA%npm-cache`Diretório de cache de pacotes local
`save-exact``false`Fixar versões exatas em `package.json`
`fund``true`Mostrar mensagens de financiamento após instalação
`audit``true`Executar auditoria de segurança na instalação

Passo 6: Criar e Executar uma Aplicação Node.js

Inicializar o Projeto

“`

mkdir my-node-app

cd my-node-app

npm init -y

“`

`npm init -y` gera um `package.json` com predefinições derivadas do nome do diretório e da sua configuração de utilizador NPM. O ficheiro `package.json` é o manifesto da sua aplicação — define o ponto de entrada, scripts, dependências e metadados.

Construir um Servidor HTTP Básico

Crie `app.js` no diretório do projeto:

“`javascript

// app.js

const http = require('http');

const hostname = '127.0.0.1';

const port = 3000;

const server = http.createServer((req, res) => {

res.statusCode = 200;

res.setHeader('Content-Type', 'text/plain');

res.end('Hello, World!n');

});

server.listen(port, hostname, () => {

console.log(`Server running at http://${hostname}:${port}/`);

});

“`

Execute-o:

“`

node app.js

“`

Navegue para `http://127.0.0.1:3000/` no seu navegador. Deverá ver `Hello, World!`.

Nota técnica: O Node.js utiliza um ciclo de eventos de thread único suportado pelo libuv para operações de I/O. O callback `http.createServer` é acionado em cada pedido recebido sem bloquear o ciclo. Esta arquitetura torna o Node.js altamente eficiente para cargas de trabalho com I/O intensivo, mas inadequado para tarefas com uso intensivo de CPU sem worker threads ou processos filho.

Adicionar o Framework Express

O Express é o framework HTTP padrão de facto para Node.js, fornecendo roteamento, suporte a middleware e uma abstração limpa de pedido/resposta:

“`

npm install express

“`

Isto instala o Express localmente (em `node_modules/`) e regista-o como dependência em `package.json`. Atualize `app.js`:

“`javascript

const express = require('express');

const app = express();

const port = 3000;

app.get('/', (req, res) => {

res.send('Hello from Express!');

});

app.listen(port, () => {

console.log(`Server running at http://localhost:${port}`);

});

“`

“`

node app.js

“`

Visite `http://localhost:3000/` para confirmar a resposta.

Compreender `node_modules` e `.gitignore`

O diretório `node_modules` pode conter centenas de megabytes de ficheiros. Nunca o submeta ao controlo de versões. Crie um ficheiro `.gitignore`:

“`

node_modules/

.env

“`

Os colaboradores e os pipelines de implementação restauram as dependências executando `npm install`, que lê `package.json` e `package-lock.json` para reproduzir a árvore de dependências exata.

Passo 7: Gerir Pacotes — Local vs. Global

Compreender a distinção entre instalação de pacotes local e global é uma das fontes de confusão mais comuns para os recém-chegados ao Node.js.

ÂmbitoComando de InstalaçãoLocalizaçãoCaso de Uso
**Local**`npm install <pkg>``./node_modules/`Dependências da aplicação
**Local Dev**`npm install –save-dev <pkg>``./node_modules/`Ferramentas de compilação, executores de testes
**Global**`npm install -g <pkg>``%APPDATA%npm`Ferramentas CLI (por exemplo, `nodemon`, `pm2`)

Regra fundamental: Se um pacote fornece uma ferramenta de linha de comandos que pretende disponível em todo o lado (por exemplo, `nodemon`, `eslint`, `typescript`), instale-o globalmente. Se for uma biblioteca que a sua aplicação importa com `require()` ou `import`, instale-a localmente.

Executar Aplicações em Produção com PM2

Para qualquer aplicação Node.js implementada num servidor — seja numa instância de VPS Hosting ou num Servidor Dedicado — executar `node app.js` diretamente é insuficiente. O processo terminará se o terminal for fechado ou ocorrer uma exceção não tratada.

O PM2 é o gestor de processos padrão para Node.js em produção:

“`

npm install -g pm2

pm2 start app.js –name "my-app"

pm2 startup

pm2 save

“`

`pm2 startup` gera um comando para configurar o PM2 para reiniciar a sua aplicação automaticamente no arranque do sistema. `pm2 save` persiste a lista de processos atual.

Passo 8: Reforço de Segurança e Auditoria

Executar uma Auditoria de Dependências

“`

npm audit

“`

O NPM cruza os seus pacotes instalados com a Base de Dados de Avisos do GitHub. Quaisquer vulnerabilidades conhecidas são reportadas com níveis de gravidade (baixo, moderado, alto, crítico) e caminhos de remediação.

“`

npm audit fix

“`

Isto atualiza automaticamente os pacotes vulneráveis para a versão corrigida mais próxima sem quebras. Para alterações com quebras, reveja o resultado e atualize manualmente.

Fixar Versões de Dependências

Em `package.json`, o NPM utiliza intervalos de versionamento semântico por predefinição (`^1.2.3` permite atualizações menores e de patch). Em produção, fixe versões exatas para evitar surpresas na cadeia de fornecimento:

“`

npm config set save-exact true

“`

Ou substitua manualmente os prefixos `^` por strings de versão exatas em `package.json` e submeta o ficheiro `package-lock.json`.

Evitar Executar o NPM como Administrador

Executar `npm install -g` com privilégios elevados escreve ficheiros pertencentes à conta de Administrador, o que pode causar erros de permissão em operações subsequentes sem elevação. Configure um prefixo global pertencente ao utilizador (ver Passo 5) para eliminar completamente a necessidade de privilégios elevados.

Implementar Aplicações Node.js num Servidor

O desenvolvimento local é apenas a primeira fase. A implementação em produção introduz requisitos adicionais: gestão de processos, proxy reverso, terminação TLS e gestão de variáveis de ambiente.

Uma stack de produção típica numa instância Linux de VPS Hosting combina o Node.js com o Nginx como proxy reverso. O Nginx trata da terminação TLS (utilizando certificados de um fornecedor como Certificados SSL) e encaminha os pedidos para o processo Node.js a escutar numa porta local.

Para equipas que preferem um ambiente de painel de controlo gerido, o VPS com cPanel fornece gestão de aplicações Node.js através da interface cPanel, simplificando a implementação sem necessitar de configuração direta via SSH.

A configuração específica do ambiente (credenciais de base de dados, chaves API, números de porta) nunca deve ser codificada diretamente. Utilize um ficheiro `.env` com o pacote `dotenv`:

“`

npm install dotenv

“`

“`javascript

require('dotenv').config();

const port = process.env.PORT || 3000;

“`

Matriz de Decisão: Quando Usar Cada Método de Instalação

CenárioAbordagem Recomendada
Projeto único, a aprender Node.jsInstalador MSI, versão LTS
Múltiplos projetos com diferentes versões do Node.jsnvm-for-windows
Pipeline CI/CD no Windows ServerInstalador MSI ou Chocolatey (`choco install nodejs-lts`)
Servidor Linux de produçãoGestor de pacotes (apt/yum) ou nvm
Aplicação em contentorImagem Docker oficial `node`
Ambiente corporativo isoladoMSI offline + registo NPM privado (Verdaccio)

Principais Conclusões Técnicas

  • Instale sempre a versão LTS para produção e ambientes de equipa. Utilize o lançamento Current apenas quando for necessária uma funcionalidade específica do V8 ou da API do Node.js.
  • Utilize o nvm-for-windows em qualquer ambiente onde múltiplas versões do Node.js devam coexistir.
  • Verifique o checksum SHA-256 do instalador antes da execução.
  • Altere o prefixo NPM global para um diretório pertencente ao utilizador para evitar erros de permissão e eliminar a necessidade de privilégios elevados.
  • Nunca submeta `node_modules/` ao controlo de versões. Submeta sempre `package-lock.json`.
  • Execute `npm audit` após cada `npm install` nos pipelines de produção.
  • Utilize o PM2 para gestão de processos em qualquer implementação em servidor — nunca execute `node app.js` diretamente em produção.
  • Termine o TLS na camada de proxy reverso (Nginx, Caddy) em vez de dentro do processo Node.js para melhor desempenho e gestão de certificados.
  • Armazene segredos em variáveis de ambiente carregadas via `dotenv`, nunca no código fonte.

Perguntas Frequentes

Qual é a diferença entre o Node.js LTS e o Current no Windows?

As versões LTS recebem patches de segurança e estabilidade durante 30 meses e têm números de versão principal pares (18, 20, 22). As versões Current incluem as funcionalidades mais recentes de linguagem e runtime, mas são suportadas apenas durante seis meses antes de transitarem para LTS ou serem descontinuadas. Para implementações Windows em produção, utilize sempre LTS.

Por que razão `npm install -g` falha com um erro de permissões no Windows?

O prefixo global predefinido (`C:Users<username>AppDataRoamingnpm`) ocasionalmente não tem permissões de escrita devido a políticas UAC ou instalações anteriores executadas como Administrador. A correção é executar o terminal como Administrador (não recomendado a longo prazo) ou reconfigurar o prefixo global para um diretório que a sua conta de utilizador possua com `npm config set prefix "C:yourpath"`.

Posso executar múltiplas versões do Node.js simultaneamente no Windows?

Sim, utilizando o nvm-for-windows. Instale-o e, em seguida, utilize `nvm install <version>` e `nvm use <version>` para alternar o runtime ativo. Cada versão mantém o seu próprio diretório de pacotes global, evitando conflitos entre versões.

O que é `package-lock.json` e devo submetê-lo?

`package-lock.json` é um registo exato e determinístico de toda a árvore de dependências resolvida durante `npm install`. Garante que cada programador e cada execução CI/CD instala versões de pacotes idênticas. Submeta-o sempre ao controlo de versões e nunca o edite manualmente.

Como executo uma aplicação Node.js automaticamente no arranque do Windows sem um servidor?

Para máquinas de desenvolvimento, utilize o PM2 com `pm2 startup` e `pm2 save`. Para integração com o Serviço Windows, ferramentas como `node-windows` encapsulam um processo Node.js como um Serviço Windows nativo, permitindo a gestão através do snap-in MMC de Serviços e reinício automático em caso de falha ou reinicialização.

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar