es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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…

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Verifica si el servidor Redis está en ejecución: Ejecuta el comando redis-cli ping en tu terminal. Si el servidor Redis está en ejecución, debería devolver PONG.
    2. 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 en localhost:6379. Si el servidor Redis está en ejecución en un puerto diferente, reemplaza 6379 con el puerto correspondiente.

    3. 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 IP 172.17.0.2, utiliza redis://172.17.0.2:6379 como la URL del cliente Redis.

    Espero que esto te ayude a resolver el problema.

Comments are closed.