nuxt 3 미들웨어에서 redis 클라이언트에 연결을 시도했지만 연결이 정의되지 않았습니다.
P粉512526720
2023-08-30 13:36:47
<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>
서버 측 부분에서만 Redis 요청을 실행하고 있는 것 같습니다. 클라이언트 측 라우팅이 발생하면 컨텍스트가 손실됩니다.
으아악