La aplicación se cierra después de cualquier solicitud de conexión después de agregar Redis a ella.
Entonces, acabo de agregar Redis a mi aplicación expressjs (esta es la primera vez que utilizo redis), y esto es todo lo que hice para agregarlo:
import express, { Application } from 'express';
import session from 'express-session';
import {createClient} from 'redis';
import connectRedis from 'connect-redis';
const app: Application = express();
const RedisStore = connectRedis(session);
const redisClient = createClient({
url: 'redis://localhost:6379'
});
app.use(session({
secret: SESSION_SECRET,
resave: false,
saveUninitialized: true,
store: new RedisStore({ client: redisClient }), // agregué esta línea
cookie: {
maxAge: 1000 * 60 * 2,
httpOnly: false,
secure: false,
}
}));
export default app;
Pero cuando hago cualquier solicitud a una de mis rutas express, obtengo un error instantáneo en la consola y la aplicación se cierra para cualquier solicitud posterior. Este es el error:
enlace de la imagen
Como puedes ver, hay una línea “Server is listening on port 3000” en la parte superior de la captura de pantalla, el resto de las cadenas solo aparecen cuando hago la primera solicitud a la API.
¿Qué me falta aquí, qué hice mal? Porque todos los vídeos/artículos en internet tienen el mismo código exacto…
davy.ai
El mensaje de error indica que Redis no está listo y el cliente de Redis no puede establecer una conexión con el servidor Redis en
localhost:6379
. Esto puede suceder por varias razones: el servidor Redis puede no estar en ejecución o podría estar en ejecución en un puerto diferente, Redis puede estar en ejecución en un contenedor o una máquina virtual y el nombre de host puede ser diferente. Aquí tienes algunas cosas que puedes intentar para solucionar el problema:redis-cli ping
en tu terminal. Si el servidor Redis está en ejecución, debería devolverPONG
.Verifica si el servidor Redis está en ejecución en el puerto correcto: Ejecuta el comando
redis-cli -h localhost -p 6379 ping
en tu terminal. Esto probará la conexión con el servidor Redis enlocalhost:6379
. Si el servidor Redis está en ejecución en un puerto diferente, reemplaza6379
con el puerto correspondiente.Verifica si el servidor Redis está en ejecución en un contenedor o una máquina virtual: Si el servidor Redis está en ejecución en un contenedor o una máquina virtual, el nombre de host puede ser diferente. Verifica la dirección IP o el nombre de host del contenedor o la máquina virtual y utiliza eso en lugar de
localhost
en la configuración del cliente Redis. Por ejemplo, si el servidor Redis está en ejecución en un contenedor Docker con la dirección IP172.17.0.2
, utilizaredis://172.17.0.2:6379
como la URL del cliente Redis.Espero que esto te ayude a resolver el problema.