---
title: "Cómo instalar Node.js con NVM en macOS y Ubuntu"
description: "Guía paso a paso para instalar Node.js con NVM en macOS y Ubuntu, incluidos los Mac con Apple Silicon y cómo cambiar entre varias versiones de Node."
date: 2022-10-07
categories: ["web-development"]
tags: ["node"]
---

import YouTubeEmbed from "@components/widgets/YouTubeEmbed.astro";

NVM (Node Version Manager) es la forma recomendada de instalar Node.js en macOS y Linux. Te permite instalar varias versiones de Node.js y cambiar entre ellas sin sudo. Esta guía cubre la instalación tanto en macOS como en Ubuntu, además de cómo gestionar múltiples versiones de Node.

## Por qué NVM en lugar de una instalación directa

Instalar Node.js directamente desde el instalador oficial o el gestor de paquetes de tu SO funciona, pero tiene inconvenientes:

- Los paquetes del sistema suelen estar desactualizados (el repositorio por defecto de Ubuntu puede ir meses por detrás).
- Necesitas `sudo` para instalar paquetes globales de npm, lo que es un quebradero de cabeza de permisos.
- Cambiar entre versiones de Node para distintos proyectos es tedioso.

NVM resuelve los tres problemas. Cada versión de Node se instala en tu directorio personal (`~/.nvm/versions/node/`), y cambiar entre ellas es instantáneo.

## 1. Instalar NVM

### macOS

Asegúrate de tener instaladas primero las Xcode Command Line Tools:

```bash
xcode-select --install
```

Después instala NVM con el script oficial de instalación:

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
```

Esto clona NVM en `~/.nvm` y añade las líneas necesarias a tu perfil de shell (`~/.zshrc` en macOS moderno, ya que zsh es la shell por defecto desde macOS 10.15).

Recarga tu shell:

```bash
source ~/.zshrc
```

Comprueba que funciona:

```bash
nvm --version
```

Deberías ver `0.40.5`.

**Nota sobre los Mac con Apple Silicon (M1/M2/M3/M4):** Node.js v16+ tiene soporte nativo para arm64, así que NVM funciona sin configuración adicional. Si necesitas ejecutar versiones de Node.js anteriores a v16, tendrás que usar Rosetta — consulta la [documentación de NVM para Apple Silicon](https://github.com/nvm-sh/nvm#macs-with-apple-silicon-chips).

**No uses Homebrew para instalar NVM.** Los mantenedores de NVM indican explícitamente que la instalación con Homebrew no está soportada. Si ya lo tienes instalado con Homebrew, desinstálalo primero con `brew uninstall nvm` y usa el script anterior.

### Ubuntu

Instala curl si no lo tienes:

```bash
sudo apt update && sudo apt install curl -y
```

Después ejecuta el script oficial de instalación:

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
```

El script clona NVM en `~/.nvm` y añade las líneas de source a `~/.bashrc`. Recarga tu shell:

```bash
source ~/.bashrc
```

Compruébalo:

```bash
nvm --version
```

Eso es todo. Sin `sudo`, sin cambios a nivel de sistema.

## Guía en vídeo en YouTube

<YouTubeEmbed
  url="https://www.youtube.com/embed/XXrZHWKTJfg"
  label="Cómo instalar Node.js con NVM en macOS y Ubuntu"
/>

## 2. Instalar Node.js con NVM

A partir de aquí, NVM funciona igual en macOS y en Ubuntu.

### Instalar la última versión LTS

La opción `--lts` instala la última versión con soporte a largo plazo (Long-Term Support). A mediados de 2026, esa es Node.js 24 (nombre en clave Krypton):

```bash
nvm install --lts
```

Compruébalo:

```bash
node --version
# v24.x.x
npm --version
```

### Instalar una versión específica

```bash
nvm install 22
```

Esto instala la última versión v22.x (nombre en clave Jod, también LTS).

### Cambiar entre versiones

```bash
nvm use 24
nvm use 22
```

Comprueba qué tienes instalado:

```bash
nvm ls
```

### Establecer una versión por defecto

La primera versión que instalas se convierte en la versión por defecto para las nuevas shells. Para cambiarla:

```bash
nvm alias default 24
```

### Usar un archivo .nvmrc (versión de Node por proyecto)

Crea un archivo `.nvmrc` en la raíz de tu proyecto:

```bash
echo "22" > .nvmrc
```

Luego, al hacer `cd` en ese directorio del proyecto:

```bash
nvm use
# Found .nvmrc with version <22>
# Now using node v22.22.1
```

Si la versión no está instalada todavía, `nvm install` la descargará automáticamente.

## Calendario actual de versiones de Node.js

| Versión | Nombre en clave | Estado | EOL |
|---------|-----------------|--------|-----|
| v26 | — | Actual (mayo 2026) | — |
| v24 | Krypton | LTS activa | abr 2028 |
| v22 | Jod | LTS en mantenimiento | abr 2027 |
| v20 | Iron | EOL (abr 2026) | — |
| v18 | Hydrogen | EOL (abr 2025) | — |
| v16 | Gallium | EOL (sep 2023) | — |

Usa v24 para proyectos nuevos. Usa v22 si tu proyecto o dependencias aún no se han puesto al día. Evita v20 y anteriores.

A partir de Node.js 27 (octubre de 2026), el ciclo de versiones pasa a una versión mayor por año en lugar de dos.

## Comandos útiles de NVM

| Comando | Qué hace |
|---------|----------|
| `nvm install --lts` | Instalar la última LTS |
| `nvm install 24` | Instalar una versión mayor específica |
| `nvm install 22.10.0` | Instalar una versión exacta |
| `nvm use 24` | Cambiar a una versión |
| `nvm ls` | Listar las versiones instaladas |
| `nvm ls-remote --lts` | Listar todas las versiones LTS disponibles |
| `nvm alias default 24` | Establecer la versión por defecto para nuevas shells |
| `nvm uninstall 18` | Eliminar una versión |
| `nvm current` | Mostrar la versión activa |

## Solución de problemas

**`nvm: command not found` tras la instalación**

Tu perfil de shell no se ha recargado. Prueba a cerrar y reabrir el terminal. Si no funciona, comprueba que `~/.zshrc` (macOS) o `~/.bashrc` (Ubuntu) contiene las líneas de NVM. También puedes ejecutar:

```bash
source ~/.nvm/nvm.sh
```

**Los paquetes globales de npm piden sudo**

Si estás usando `sudo npm install -g <package>`, algo va mal. El Node instalado con NVM no necesita sudo para los paquetes globales. Si tienes un archivo `~/.npmrc` con una opción `prefix`, elimínalo.

**Aparece una versión antigua de Node al abrir un terminal nuevo**

Ejecuta `nvm alias default` para ver cuál está configurada. Arréglalo con `nvm alias default <version>`.

**`which nvm` no devuelve nada**

Es lo esperado. NVM es una función de shell, no un binario. Usa `command -v nvm` en su lugar.