nuxt 3ミドルウェアからredisクライアントに接続しようとしていますが、接続が定義されていません
P粉512526720
2023-08-30 13:36:47
<p>Redis サーバーに接続して nuxt 3 DefineNuxtRouteMiddleware ミドルウェアからセッション データを取得しようとしていますが、成功しません。サーバー側プラグインで Redis への接続を作成しました。すべての API エンドポイントで機能しますが、rout-guards ミドルウェアでは機能しないようです。以下のコードで接続を取得しようとしましたが、接続が定義されていません。ミドルウェアのサーバー側の実行が Redis 接続にアクセスできるはずだと考えるのは間違っていますか</p>
<pre class="brush:php;toolbar:false;">if (process.server) {
let session = await RedisUtil.getConnection.get(sessionID);
}</pre>
<p>以下は redisUtil</p> です。
<pre class="brush:php;toolbar:false;">class RedisUtil{
静的 getgetConnection(){
this.connection を返します。
}
静的セット setConnection(接続){
this.connection = 接続;
}
静的非同期接続(config) {
let redis = createClient({
URL: 'redis://' config.redis.user ':' config.redis.password '@' config.redis.host ':' config.redis.port
});
redis.on('エラー', err => console.log('Redis クライアント エラー', err));
redis.connect() を待ちます;
RedisUtil.setConnection = redis;
console.log("redis に接続されました");
}
}</pre>
<p>Redis プラグインが nitro 構成にロードされました</p>
<pre class="brush:php;toolbar:false;">RedisUtil を '../utils/RedisUtil' からインポートします;
「~/server.config」から設定をインポートします。
デフォルトの非同期 (NuxtApp) をエクスポート => {
RedisUtil.connect(config) を待ちます;
};</pre>
<pre class="brush:php;toolbar:false;">nitro: {
プラグイン: [
「~/server/plugins/redis.js」
]、
},</pre>
<p>上で述べたように、他のすべてのサーバー側の実行では Redis 接続にアクセスできますが、ミドルウェアではアクセスできません。これに関してご協力をいただければ幸いです。 </p>
サーバー側部分でのみ Redis リクエストを実行しているようです。これが発生すると、クライアント側のルーティングでコンテキストが失われます。
リーリー