[英]Cant connect to redis in Node.JS
基本上我不知道为什么节点不会连接到 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:未处理的 promise 拒绝。 此错误源于在没有 catch 块的情况下抛出异步 function 内部,或拒绝未使用.catch() 处理的 promise。 要终止未处理的 promise 拒绝的节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode )。 (拒绝 ID:2)(节点:6601)[DEP0018] DeprecationWarning:不推荐使用未处理的 promise 拒绝。 将来,未处理的 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
您应该在执行命令之前调用client.connect()
。 顺便说一句, redis@4.0.0
有内置的 Promise 支持,不需要创建异步包装器
const redis = require('redis'),
client = redis.createClient({
// ...
});
client.on('error', err => {
// ...
});
await client.connect();
console.log(await client.ping());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.