如何解决Adonis 4.1本地运行时[ioredis]连接ECONNREFUSED错误?
解决Adonis 4.1访问时Redis连接被拒绝(ECONNREFUSED 127.0.0.1:6379)的问题
问题场景
本地运行Adonis 4.1项目,执行adonis serve --dev后服务启动正常:
SERVER STARTED > Watching files for changes... info: serving app on http://127.0.0.1:3333
但访问http://127.0.0.1:3333时触发Redis连接错误:
[ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16)
解决方案
检查Redis服务是否启动
本地Redis未运行是最常见原因:- Windows:打开Redis安装目录运行
redis-server.exe,或在系统服务列表中找到Redis服务,设置为自动启动并启动它。 - macOS/Linux:执行
redis-server启动服务,或用systemctl start redis通过系统服务管理启动。
启动后执行redis-cli ping测试,返回PONG说明服务正常。
- Windows:打开Redis安装目录运行
验证Adonis的Redis配置
打开项目根目录下的config/redis.js,确认配置与本地Redis服务匹配:module.exports = { connection: 'local', local: { host: process.env.REDIS_HOST || '127.0.0.1', port: process.env.REDIS_PORT || 6379, password: process.env.REDIS_PASSWORD || null, db: process.env.REDIS_DB || 0, keyPrefix: '' } }同时检查
.env文件中的REDIS_HOST、REDIS_PORT等环境变量是否正确,若Redis设置了密码,需填写对应password值。检查Redis端口是否被占用
若6379端口被其他程序占用,Redis无法启动:- Windows:执行
netstat -ano | findstr :6379找到占用进程的PID,结束对应进程;或修改Redis配置文件redis.conf中的port值,同步更新Adonis的redis.js配置。 - macOS/Linux:执行
lsof -i :6379查看占用进程,杀掉进程或修改端口。
- Windows:执行
添加Redis错误监听(可选)
为避免单个Redis连接错误导致服务崩溃,可在start/app.js中添加错误监听:const Redis = use('Redis') Redis.on('error', (error) => { console.error('Redis连接错误:', error.message) // 可在此添加重试逻辑或其他处理 })
内容的提问来源于stack exchange,提问作者positive developer
相关产品推荐
相关产品推荐

