You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS SDK迁移至4.2.7时连接Couchbase遇RequestCanceledError

Couchbase NodeJS SDK 4.x连接集群报RequestCanceledError的排查与解决

从NodeJS SDK 2.6.12迁移到4.2.7后,连接本地Docker部署的Couchbase 7.1.3集群时出现RequestCanceledError,但旧版本代码可正常连接,可从以下几个方向排查解决:

1. 调整连接超时配置

新版SDK中,kvTimeout仅控制KV操作的超时时间,连接集群阶段的超时由connectTimeout参数单独控制。你当前的代码只设置了kvTimeout,未指定connectTimeout,若连接过程耗时超过默认阈值,就会触发请求取消错误。

修改代码添加connectTimeout参数,适当调大超时时间:

const uri = "couchbase://localhost";
const bucket = "test";
const pw = "password";

const timeoutOperation = 2;
const connectTimeout = 10; // 单位:秒

async function run() {
    try {
        const cluster = await cb.connect(uri, {
            "username": bucket,
            "password": pw,
            "timeouts": {
                "kvTimeout": timeoutOperation * 1000,
                "connectTimeout": connectTimeout * 1000
            }
        });
        const openBucket = cluster.bucket(bucket);
        const connection = openBucket.defaultCollection();
        console.log("集群连接成功");
    } catch (err) {
        console.error("连接失败:", err);
    }
}

run();

2. 验证URI格式与端口映射

  • 新版SDK的连接URI默认使用8091端口,可省略端口号直接写couchbase://localhost,避免端口配置冗余。
  • 检查Docker容器的端口映射是否正确:确保宿主机的8091端口已映射到容器的8091端口,且无其他程序占用该端口。

3. 确认用户权限兼容性

虽然旧版SDK可使用bucket名作为用户名连接,但新版SDK对权限校验更严格。需确保:

  • 集群中存在以bucket名为用户名的账号,且该账号拥有Data Reader、Data Writer等必要权限(至少具备集群连接权限)。
  • 若集群启用了RBAC权限控制,需确认该账号的权限范围覆盖目标bucket。

4. 查看集群日志排查细节

进入Docker容器查看Couchbase日志,获取更详细的连接失败原因:

# 进入Couchbase容器
docker exec -it <容器ID> /bin/bash
# 查看集群日志
cat /opt/couchbase/var/lib/couchbase/logs/ns_server.log

内容的提问来源于stack exchange,提问作者Timo S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:07