Entorno de desarrollo para backend con Node.js

Capítulo 1

Tiempo estimado de lectura: 6 minutos

+ Ejercicio

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 -v

Deberí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:

Continúa en nuestra aplicación.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
O continúa leyendo más abajo...
Download App

Descargar la aplicación

node

Luego escribe:

console.log('Hola desde Node');

Para salir del REPL:

.exit

Uso básico de la terminal para ejecutar scripts

Comandos esenciales

  • cd: cambiar de carpeta (directorio).
  • ls (macOS/Linux) o dir (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.js

Node 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-node

2) Crea un archivo llamado index.js (puedes hacerlo desde tu editor o con un comando). En Windows (PowerShell) podrías usar:

New-Item index.js

En macOS/Linux:

touch index.js

3) (Opcional pero recomendable) Inicializa un proyecto con npm para tener un package.json:

npm init -y

Esto 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 start

Có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/OQué implica
Leer un archivoEsperar al disco
Consultar una APIEsperar a la red
Consultar una base de datosEsperar al servidor de BD
Escuchar HTTPEsperar 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=dev

Salida 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 PATH no 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 actual

Luego lista archivos:

ls    # macOS/Linux
dir   # Windows

Confusió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.

Ahora responde el ejercicio sobre el contenido:

Al ejecutar un script de Node.js que incluye un setTimeout, ¿qué comportamiento esperas observar en la terminal si el modelo es asíncrono y no bloqueante?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

En un modelo no bloqueante, el temporizador se programa y el resto del código continúa ejecutándose; el callback del setTimeout se ejecuta cuando se cumple el tiempo.

Siguiente capítulo

Gestión de dependencias con npm en proyectos Node.js

Arrow Right Icon
Portada de libro electrónico gratuitaNode.js para principiantes: crea un backend simple con Express
8%

Node.js para principiantes: crea un backend simple con Express

Nuevo curso

12 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.