Ich versuche erfolglos, eine Verbindung zu einem Redis-Server herzustellen, um Sitzungsdaten von der Nuxt 3 DefineNuxtRouteMiddleware-Middleware abzurufen. Ich habe im serverseitigen Plugin eine Verbindung zu Redis erstellt und es funktioniert für alle meine API-Endpunkte, aber es scheint nicht für meine Rout-Guards-Middleware zu funktionieren. Ich versuche, die Verbindung im folgenden Code herzustellen, aber die Verbindung ist nicht definiert. Liege ich falsch in der Annahme, dass die serverseitige Ausführung der Middleware Zugriff auf die Redis-Verbindung haben sollte
if (process.server) { let session = waiting RedisUtil.getConnection.get(sessionID); }
Das Folgende ist redisUtil
class RedisUtil{ statisch getgetConnection(){ return this.connection; } statische Menge setConnection(connection){ this.connection = Verbindung; } statische asynchrone Verbindung (config) { let redis = createClient({ URL: 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port }); redis.on('error', err => console.log('Redis Client Error', err)); Warten Sie auf redis.connect(); RedisUtil.setConnection = redis; console.log("Mit Redis verbunden"); } }
Redis-Plugin in Nitro-Konfiguration geladen
import RedisUtil from '../utils/RedisUtil'; Konfiguration aus „~/server.config“ importieren; Standardmäßig asynchron exportieren (NuxtApp) => Warten Sie auf RedisUtil.connect(config); };
nitro: { Plugins: [ "~/server/plugins/redis.js" ], },
Wie oben erwähnt, kann ich in allen anderen serverseitigen Ausführungen auf die Redis-Verbindung zugreifen, jedoch nicht in der Middleware. Jede Hilfe hierzu wäre sehr dankbar.
看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。