> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Error EADDRINUSE ("puerto ya en uso"): cómo resolver

## Qué significa el error EADDRINUSE

El error `EADDRINUSE` (del inglés *Error: Address already in use*) ocurre cuando tu aplicación intenta "escuchar" (listen) en un puerto que **ya está siendo utilizado por otro proceso**. En Node.js, el mensaje suele ser parecido a `Error: listen EADDRINUSE: address already in use :::3000`.

En resumen: el puerto 3000 (o cualquier otro) ya está ocupado, y dos procesos no pueden usar el mismo puerto al mismo tiempo.

## Por qué ocurre

* Iniciaste la aplicación dos veces sin cerrar la primera.
* Un proceso anterior se colgó y quedó "atrapado" reteniendo el puerto.
* Otra aplicación en el mismo servidor ya utiliza ese puerto.
* Definiste un puerto fijo en el código (ej.: `app.listen(3000)`) en lugar de usar el puerto proporcionado por el entorno.

## Cómo resolverlo en tu computadora (local)

**1. Identifica el proceso que está utilizando el puerto**

En Linux o macOS:
`lsof -i :3000`

En Windows:
`netstat -ano | findstr :3000`

**2. Finaliza el proceso** (reemplaza PID por el número que apareció)

En Linux o macOS: `kill -9 PID`

En Windows: `taskkill /PID PID /F`

## La solución definitiva: usa el puerto del entorno

Definir un puerto fijo en el código es la causa más común de este problema en producción. En lugar de `app.listen(3000)`, usa la variable de entorno `PORT`:

```
const port = process.env.PORT || 3000;
app.listen(port);
```

De este modo, el entorno de hospedaje define el puerto correcto automáticamente y el conflicto desaparece.

## Cómo Square Cloud evita este problema

En Square Cloud, cada aplicación se ejecuta en un entorno aislado y dedicado; ningún otro proceso "roba" tu puerto. Solo basta con que tu aplicación respete la variable `PORT` y configures el puerto en el archivo `squarecloud.app`; el despliegue se encarga del resto.