찾다

 >  Q&A  >  본문

nuxt 3 미들웨어에서 redis 클라이언트에 연결을 시도했지만 연결이 정의되지 않았습니다.

<p>Nuxt 3 DefineNuxtRouteMiddleware 미들웨어에서 세션 데이터를 가져오기 위해 Redis 서버에 연결하려고 하는데 성공하지 못했습니다. 서버 측 플러그인에서 redis에 대한 연결을 만들었고 모든 API 엔드포인트에서 작동하지만 내 rout-guards 미들웨어에서는 작동하지 않는 것 같습니다. 아래 코드에서 연결을 시도했지만 연결이 정의되지 않았습니다. 미들웨어 서버 측 실행이 Redis 연결</p>에 액세스해야 한다고 가정하는 것이 잘못된 것인가요? <pre class="brush:php;toolbar:false;">if (process.server) { 세션 = 대기 RedisUtil.getConnection.get(sessionID); }</pre> <p>다음은 redisUtil</p> <pre class="brush:php;toolbar:false;">클래스 RedisUtil{ 정적 getConnection(){ this.connection을 반환합니다. } 정적 세트 setConnection(연결){ this.connection = 연결; } 정적 비동기 연결(구성) { redis = createClient({ URL: 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port }); redis.on('error', err => console.log('Redis 클라이언트 오류', err)); redis.connect()를 기다립니다; RedisUtil.setConnection = 레디스; console.log("redis에 연결되었습니다"); } }</pre> <p>nitro 구성에 로드된 redis 플러그인</p> <pre class="brush:php;toolbar:false;">'../utils/RedisUtil'에서 RedisUtil을 가져옵니다. "~/server.config"에서 구성 가져오기 기본 비동기 내보내기(NuxtApp) => RedisUtil.connect(config)를 기다립니다; };</pre> <pre class="brush:php;toolbar:false;">니트로: { 플러그인: [ "~/server/plugins/redis.js" ], },</pre> <p>위에서 언급한 것처럼 다른 모든 서버측 실행에서는 redis 연결에 액세스할 수 있지만 미들웨어에서는 액세스할 수 없습니다. 이에 대한 도움을 주시면 대단히 감사하겠습니다. </p>
P粉512526720P粉512526720477일 전642

모든 응답(1)나는 대답할 것이다

  • P粉098979048

    P粉0989790482023-08-31 12:43:49

    서버 측 부분에서만 Redis 요청을 실행하고 있는 것 같습니다. 클라이언트 측 라우팅이 발생하면 컨텍스트가 손실됩니다.

    으아악

    회신하다
    0
  • 취소회신하다