Qué necesitas para empezar
Para desarrollar un backend con Node.js necesitas un entorno mínimo: (1) Node.js instalado (incluye npm), (2) una terminal para ejecutar comandos, y (3) una carpeta de proyecto con un archivo JavaScript que puedas correr con node. En este capítulo vas a verificar que todo funciona creando un primer script de consola (sin frontend) y entendiendo qué está pasando “por debajo” cuando Node ejecuta JavaScript fuera del navegador.
Instalación y verificación de Node.js y npm
1) Instalar Node.js
Instala Node.js desde el sitio oficial (elige la versión LTS). En la mayoría de sistemas, el instalador también incluye npm (el gestor de paquetes).
2) Verificar la instalación
Abre una terminal y ejecuta estos comandos para comprobar que Node y npm están disponibles en tu sistema:
node -v
npm -vDeberías ver números de versión (por ejemplo, v20.x.x y 10.x.x). Si el comando no se reconoce, normalmente significa que Node no está instalado o que tu variable PATH no incluye la ruta del ejecutable.
3) Verificar que Node ejecuta JavaScript
Node puede ejecutar un archivo o entrar en modo interactivo (REPL). Para probar el REPL:
- Escuche el audio con la pantalla apagada.
- Obtenga un certificado al finalizar.
- ¡Más de 5000 cursos para que explores!
Descargar la aplicación
nodeLuego escribe:
console.log('Hola desde Node');Para salir del REPL:
.exitUso básico de la terminal para ejecutar scripts
Comandos esenciales
cd: cambiar de carpeta (directorio).ls(macOS/Linux) odir(Windows): listar archivos.mkdir: crear carpeta.code .(si usas VS Code): abrir el proyecto en el editor.
Ejecutar un archivo con Node
La forma más común es:
node nombre-del-archivo.jsNode leerá el archivo, lo interpretará/ejecutará y mostrará la salida en la terminal.
Crear una carpeta de proyecto (entorno mínimo)
Paso a paso
1) Crea una carpeta para tu proyecto y entra en ella:
mkdir mi-backend-node
cd mi-backend-node2) Crea un archivo llamado index.js (puedes hacerlo desde tu editor o con un comando). En Windows (PowerShell) podrías usar:
New-Item index.jsEn macOS/Linux:
touch index.js3) (Opcional pero recomendable) Inicializa un proyecto con npm para tener un package.json:
npm init -yEsto crea un archivo de configuración donde más adelante podrás definir scripts y dependencias.
Agregar un script de npm (opcional)
Si ya tienes package.json, puedes agregar un comando para ejecutar tu archivo más fácil. En package.json, en la sección scripts:
{
"scripts": {
"start": "node index.js"
}
}Luego lo ejecutas con:
npm run startCómo funciona Node.js como runtime (JavaScript fuera del navegador)
Runtime: qué significa en la práctica
Un runtime es el entorno que ejecuta tu código. En el navegador, JavaScript corre dentro del motor del navegador y usa APIs del navegador (DOM, fetch, etc.). En Node.js, JavaScript corre en el motor V8, pero con APIs orientadas al sistema: archivos, red, procesos, variables de entorno, etc. Por eso Node es ideal para backend: puede escuchar puertos, manejar solicitudes, leer/escribir archivos y conectarse a bases de datos.
Entrada/Salida (I/O): el centro del backend
En backend, la mayor parte del tiempo tu programa está esperando I/O: solicitudes HTTP, respuestas de bases de datos, lectura de archivos, etc. Node está diseñado para manejar muchas operaciones de I/O sin bloquear el proceso completo.
| Ejemplo de I/O | Qué implica |
|---|---|
| Leer un archivo | Esperar al disco |
| Consultar una API | Esperar a la red |
| Consultar una base de datos | Esperar al servidor de BD |
| Escuchar HTTP | Esperar conexiones entrantes |
Modelo asíncrono: no “se queda parado” esperando
Node usa un modelo asíncrono basado en un loop de eventos (event loop). La idea clave: cuando lanzas una operación de I/O, Node no se queda bloqueado; registra “cuando esto termine, ejecuta esta función” (callback) o, en código moderno, devuelve una Promise que puedes await. Mientras tanto, puede seguir procesando otras tareas.
Comparación conceptual:
- Bloqueante (sincrónico): el programa espera y no avanza hasta terminar la operación.
- No bloqueante (asíncrono): el programa continúa y reacciona cuando la operación termina.
Esto no significa “más rápido” automáticamente, sino “más eficiente” para manejar muchas operaciones de I/O concurrentes, algo típico en servidores.
Primer script para validar el entorno (sin frontend)
Objetivo del script
Vas a crear un archivo que: (1) lea argumentos de la línea de comandos, (2) muestre información por consola, y (3) simule una tarea asíncrona con un temporizador. Con esto validas que tu runtime funciona y entiendes el flujo básico de entrada/salida.
1) Escribe el script
En index.js pega lo siguiente:
// index.js
// 1) Entrada: argumentos de la terminal
// process.argv incluye: [ruta-a-node, ruta-al-script, ...args]
const args = process.argv.slice(2);
// 2) Salida: imprimir en consola
console.log('Node está funcionando.');
console.log('Argumentos recibidos:', args);
// 3) Ejemplo de comportamiento asíncrono
console.log('Inicio de tarea asíncrona...');
setTimeout(() => {
console.log('Tarea asíncrona terminada (después de 1 segundo).');
}, 1000);
console.log('Este mensaje aparece antes de que termine el setTimeout.');2) Ejecuta el script con argumentos
En la terminal, dentro de la carpeta del proyecto:
node index.js hola 123 --modo=devSalida esperada (el orden importa):
- Mensajes inmediatos: confirmación, argumentos, inicio de tarea, mensaje final inmediato.
- Después de ~1 segundo: el mensaje de “tarea asíncrona terminada”.
3) Qué acabas de comprobar
- Runtime: Node ejecuta tu JavaScript fuera del navegador.
- Entrada: recibes datos desde la terminal con
process.argv. - Salida: produces salida con
console.log. - Asincronía: el programa no se bloquea esperando el temporizador; continúa y luego reacciona.
Errores comunes y cómo resolverlos
node o npm “no se reconoce como un comando”
- Reinstala Node.js y asegúrate de que el instalador agregue Node al
PATH. - Cierra y vuelve a abrir la terminal (a veces el
PATHno se refresca).
Estás en la carpeta equivocada
Si ejecutas node index.js y dice que no encuentra el archivo, verifica tu ruta:
pwd # macOS/Linux
cd # Windows PowerShell muestra la ruta actualLuego lista archivos:
ls # macOS/Linux
dir # WindowsConfusión con comillas o caracteres
Si copias y pegas código, asegúrate de que las comillas sean normales (' o ") y no comillas tipográficas. También verifica que el archivo se guarde como .js.