Node.js + ArangoJS调用collections()遇ECONNREFUSED错误求助
解决ArangoJS连接ECONNREFUSED错误
核心问题分析
错误connect ECONNREFUSED ::1:8529说明Node.js程序无法连接到ArangoDB服务,大概率是服务未运行、地址端口不匹配或权限配置问题,按以下步骤排查:
1. 确认ArangoDB服务正在运行
- Windows:按Win+R输入
services.msc打开服务列表,找到ArangoDB相关服务,确认状态为「正在运行」,未运行则右键启动。 - macOS(brew安装):终端执行
brew services list,查看arangodb状态为started才正常,否则执行brew services start arangodb。 - Linux:终端执行
systemctl status arangodb,显示active (running)才正常,否则执行sudo systemctl start arangodb。 - Docker部署:终端执行
docker ps,检查ArangoDB容器是否在运行,未运行则执行docker start <容器ID/名称>。
2. 修正连接地址与端口
错误显示连接的是IPv6地址::1,若ArangoDB未开启IPv6监听,可将代码里的url改为http://127.0.0.1:8529(强制用IPv4连接)。同时检查ArangoDB配置文件(通常为arangod.conf)里的endpoint设置,默认是tcp://0.0.0.0:8529,若端口被修改,代码需对应调整。
3. 验证数据库与账号权限
- 打开ArangoDB Web管理界面(默认
http://localhost:8529),用root账号登录,确认testDB数据库已创建。 - 检查
userTest账号是否存在,且拥有testDB的访问权限(在「Users」页面找到该用户,编辑权限,给testDB分配至少「Read/Write」权限)。
4. 修正代码里的错误
你的代码有两个新手常见问题:
- 缺少
Database导入语句,根据模块类型添加:- CommonJS(Node.js默认):
const { Database } = require('arangojs'); - ES模块:
import { Database } from 'arangojs';
- CommonJS(Node.js默认):
- ArangoJS的
Database构造函数不是异步的,不需要用await,直接实例化即可。
修正后的完整代码示例:
const { Database } = require('arangojs'); const myColl = async () => { try { const db = new Database({ url: "http://127.0.0.1:8529", databaseName: "testDB", auth: {username: "userTest", password: "userTest"}, }); console.log(db); try { let collections = await db.collections(); console.log(collections); } catch (err) { console.log("获取集合失败:", err); } } catch (err) { console.log("数据库登录失败:", err); return; } }; myColl();
内容的提问来源于stack exchange,提问作者Dariusz
相关产品推荐
相关产品推荐

