【发布时间】:2022-01-13 00:28:57
【问题描述】:
基本上我不知道为什么 node 不会连接到 redis。我可以通过 CLI 连接到它,您可以在下面看到 brew 服务已启动,没有任何错误。我已经提供了所有需要的代码和信息,如果您需要任何其他信息,请告诉我。
节点错误:
(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() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:2)
(节点:6601)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
连接代码:
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
}
酿造状态:
redis started
【问题讨论】: