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

无法通过Node.js MongoDB驱动连接Cosmos DB模拟器

Cosmos DB模拟器Node.js MongoDB驱动连接失败排查求助

问题背景

  • 此前同配置的复杂应用可正常连接本地Cosmos DB模拟器,现在新建测试应用(使用MongoDB驱动)连接失败,官方CosmosClient示例也报类似错误
  • 模拟器启动命令:"C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /EnableMongoDbEndpoint
  • 管理面板可正常访问:https://localhost:8081/_explorer/index.html
  • Studio 3T for MongoDB可成功连接到localhost@localhost:10255

已尝试的配置与操作

  1. 按官方说明导出模拟器证书至项目根目录,通过以下代码获取证书路径:
    const certFilePath = path.resolve(__dirname, '../', 'documentdbemulatorcert.cer');
    
  2. 两种连接方式均尝试:
    • 方式1:使用管理面板复制的Mongo连接字符串
      const connectOptions = {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        ssl: true,
        sslValidate: true,
        sslCA: certFilePath,
      };
      const client = new MongoClient(MONGODB_CONNECTION_STRING, connectOptions);
      
    • 方式2:使用Mongo URI、用户名和未编码密码(均来自管理面板)
      const connectOptions = {
        auth: {
          username: MONGODB_AUTH_USERNAME,
          password: MONGODB_AUTH_PASSWORD_NOT_ENCODED,
        },
        useNewUrlParser: true,
        useUnifiedTopology: true,
        ssl: true,
        sslValidate: true,
        sslCA: certFilePath,
      };
      const client = new MongoClient(MONGODB_URI, connectOptions);
      
  3. 通用连接代码:
    try {
      await client.connect();
      console.log('Connection to server successful');
    } catch (error) {
      console.error('Connection to server failed:', error);
    }
    
  4. 其他调试尝试:
    • 移除useNewUrlParser、useUnifiedTopology、ssl等所有配置参数,无效
    • 设置NODE_TLS_REJECT_UNAUTHORIZED=0运行应用,仅增加安全警告,错误依旧
    • 使用Studio 3T的连接字符串,同样连接失败

报错信息

MongoDB驱动报错

Connection to server failed: MongoServerSelectionError: connect ECONNREFUSED ::1:10255
    at Timeout._onTimeout (...my-project-root...\node_modules\mongodb\lib\sdam\topology.js:292:38)
    at listOnTimeout (node:internal/timers:564:17)
    at process.processTimers (node:internal/timers:507:7) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:10255' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    setName: null,
    maxElectionId: null,
    maxSetVersion: null,
    commonWireVersion: 0,
    logicalSessionTimeoutMinutes: null
  },
  code: undefined,
  [Symbol(errorLabels)]: Set(0) {}
}

CosmosClient官方示例报错

Completed with error {"message":"request to https://localhost:8081/ failed, reason: connect ECONNREFUSED ::1:8081","type":"system","errno":"ECONNREFUSED","code":"ECONNREFUSED","headers":{"x-ms-throttle-retry-count":0,"x-ms-throttle-retry-wait-time-ms":0}}

环境信息

  • Windows 11 x64
  • Node.js 19.1.0
  • mongodb驱动4.12.1
  • Cosmos DB模拟器2.14.9.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:01:08