Termux环境下连接MongoDB遇ECONNREFUSED错误求助
在Termux环境本地运行MongoDB并解决连接失败问题
你遇到的MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017错误,核心原因是本地MongoDB服务端没有启动——你安装的mongodb npm包只是客户端驱动,不是数据库服务本身。以下是Termux环境下的完整解决流程:
1. 安装Termux版MongoDB服务端
打开Termux终端,执行以下命令:
pkg update && pkg upgrade -y pkg install mongodb -y
2. 初始化数据目录并启动服务
MongoDB需要指定数据存储目录,先创建目录再启动服务:
# 创建数据存储目录 mkdir -p ~/.mongodb/data # 启动MongoDB服务(前台运行,终端关闭则服务停止) mongod --dbpath ~/.mongodb/data
如果需要后台运行服务,执行:
mongod --dbpath ~/.mongodb/data --fork --logpath ~/.mongodb/mongod.log
3. 验证服务是否正常运行
执行以下命令测试连接:
mongo
如果能进入MongoDB交互终端,说明服务启动成功。也可以用进程命令检查:
ps aux | grep mongod
4. 重新运行你的Node.js代码
保持MongoDB服务运行的状态下,执行你的代码即可正常连接。你的代码本身没有问题:
const mongoose = require('mongoose') const url = `mongodb://127.0.0.1:27017/myapp`; mongoose.connect(url) .then(() => console.log("Connected to mongodb successfully")) .catch((err) => console.error(err))
额外提示
- 若希望每次打开Termux自动启动MongoDB,可以编辑
~/.bashrc文件,添加别名:
之后每次启动Termux,执行echo "alias start-mongo='mongod --dbpath ~/.mongodb/data --fork --logpath ~/.mongodb/mongod.log'" >> ~/.bashrcstart-mongo就能快速启动服务。 - 如果遇到权限问题,确保
~/.mongodb目录的权限正确:chmod -R 755 ~/.mongodb
内容的提问来源于stack exchange,提问作者Slavko
相关产品推荐
相关产品推荐

