我有一个 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时出错。
这些日志存在于我的代码中。
这个链接是我的参考。
我该如何修复此代码?
您应该在客户端代码或设置代码之前添加您的代码,
(async () => {
client.connect();
})();
阻止。
你必须在docker上运行redis-server。
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
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() 。因为你必须先建立连接。