ClientClosedError:使用 Docker 和 Redis 的 Node.js 中的客户端已关闭错误

问题描述 投票:0回答:3

我有一个 Node.js 代码。运行此代码时,我遇到错误。

这个错误是

ClientClosedError:客户端已关闭

我的 redis 运行在名为 redis1 的 docker 上。

const redis = require("redis");
const client = redis.createClient({
    host: '127.0.0.1',
    port: 6379
});




client.on("error", error => {
    if(error) {
        console.error("ERROR***",error);
    }else {
        console.log("Redis connect.");
    }
});


//SET
client.set("user_name", "Furkan", (err, msg) => {
    if(err) {
        console.error("Error while connecting redis", err);
    }else {
        console.log(msg);
    } 
})

此外;当我运行此代码时,不要登录终端任何代码。也就是说,当我运行此代码时,没有登录终端ERROR***,Redis已连接连接redis时出错

这些日志存在于我的代码中。

这个链接是我的参考。

我该如何修复此代码?

node.js docker redis
3个回答
4
投票

您应该在客户端代码或设置代码之前添加您的代码,

(async () => {
   client.connect();
})();

阻止。


0
投票

你必须在docker上运行redis-server。

docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest

0
投票
const redis = require("redis");
const client = redis.createClient({
    host: '127.0.0.1',
    port: 6379
});

 client.on("error", error => {
   if(error) {
       console.error("ERROR***",error);
   }else {
       console.log("Redis connect.");
   }
});

client.connect();

//SET
await client.set("user_name", "Furkan", (err, msg) => {
   if(err) {
       console.error("Error while connecting redis", err);
   }else {
       console.log(msg);
   } 
})

const message = await client.get('user_name');
console.log(message);

client.disconnect();

我知道这有效。但我是初学者,所以我不知道为什么放置等待可以解决问题。

但是你绝对必须在 client.get 或 client.set 之前执行 client.connect() 。因为你必须先建立连接。

© www.soinside.com 2019 - 2024. All rights reserved.