suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Es wird versucht, über die Nuxt 3-Middleware eine Verbindung zum Redis-Client herzustellen, aber die Verbindung ist nicht definiert

<p>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</p> <pre class="brush:php;toolbar:false;">if (process.server) { let session = waiting RedisUtil.getConnection.get(sessionID); }</pre> <p>Das Folgende ist redisUtil</p> <pre class="brush:php;toolbar:false;">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"); } }</pre> <p>Redis-Plugin in Nitro-Konfiguration geladen</p> <pre class="brush:php;toolbar:false;">import RedisUtil from '../utils/RedisUtil'; Konfiguration aus „~/server.config“ importieren; Standardmäßig asynchron exportieren (NuxtApp) => Warten Sie auf RedisUtil.connect(config); };</pre> <pre class="brush:php;toolbar:false;">nitro: { Plugins: [ "~/server/plugins/redis.js" ], },</pre> <p>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. </p>
P粉512526720P粉512526720478 Tage vor645

Antworte allen(1)Ich werde antworten

  • P粉098979048

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

    看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。

    export default defineNuxtRouteMiddleware(async (to, from) => {
      let session = '';
      if (process.server) {
        session = 'has some context';
      }
    
      // server: session = 'has some context'
      // client: session = ''
    })
    

    Antwort
    0
  • StornierenAntwort