首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到Node.JS中的redis

无法连接到Node.JS中的redis
EN

Stack Overflow用户
提问于 2021-12-08 00:17:04
回答 1查看 491关注 0票数 0

基本上,我不知道为什么节点不连接到redis。我可以通过CLI连接到它,下面您可以看到brew服务已经启动,没有任何错误。我已经提供了所有需要的代码和信息,如果您还需要什么,请告诉我。

节点错误:

代码语言:javascript
复制
(node:6601) UnhandledPromiseRejectionWarning: Error: The client is closed
at Commander._RedisClient_sendCommand (/Users/arialopez/code/url-shortener/node_modules/@node-redis/client/dist/lib/client/index.js:387:31)
at Commander.commandsExecutor (/Users/arialopez/code/url-shortener/node_modules/@node-redis/client/dist/lib/client/index.js:160:154)
at Commander.BaseClass.<computed> [as ping] (/Users/arialopez/code/url-shortener/node_modules/@node-redis/client/dist/lib/commander.js:8:29)
at new AsyncRedis (/Users/arialopez/code/url-shortener/redis/index.js:21:21)
at Object.<anonymous> (/Users/arialopez/code/url-shortener/lib/models.js:3:15)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:14)
at Module.require (internal/modules/cjs/loader.js:974:19)

(使用node --trace-warnings ...显示创建警告的位置)(节点:6601) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误起源于在异步函数中抛出而不带catch块,或者拒绝使用.catch()处理的承诺。若要在未处理的允诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict (请参阅模式)。(拒绝id: 2) (节点:6601) DEP0018 DeprecationWarning:未处理的承诺拒绝被取消。在未来,承诺不处理的拒绝将使用非零退出代码终止Node.js进程。

连接代码:

代码语言:javascript
复制
require('dotenv').config();
const redis = require('redis');
const { promisify } = require('util');

const defaultOptions = { // The defaults are being used not env.
    host: process.env.REDIS_HOST || '127.0.0.1',
    port: process.env.REDIS_PORT || 6379,
    keyPrefix: process.env.REDIS_PREFIX || 'url-'
};

class AsyncRedis {
    constructor() {
        this.client = redis.createClient(defaultOptions);
        this.client.on('error', this.error); // error handler defind below
        this.client.ping() // WHERE CODE IS BREAKING
    }
    ... Class code
}

酿造状态:

代码语言:javascript
复制
redis             started
EN

回答 1

Stack Overflow用户

发布于 2021-12-12 13:13:44

您应该在执行命令之前调用client.connect()。顺便说一句,redis@4.0.0有内置的承诺支持,不需要创建异步包装器。

代码语言:javascript
复制
const redis = require('redis'),
  client = redis.createClient({
    // ...
  });

client.on('error', err => {
  // ...
});

await client.connect();
console.log(await client.ping());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70268496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档