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

Node.js中mongodb+srv URI不能含端口号的连接问题排查

解决MongoParseError: mongodb+srv URI cannot have port number错误

可能的问题及修复方案

  • 手动添加了端口号:mongodb+srv协议的URI不需要指定端口(默认由DNS SRV记录自动解析),检查你的最终连接URI,确保没有在@orbitXXXX.huykolo.mongodb.net后面追加:27017这类端口信息。
  • 用户名/密码含特殊字符未转义:如果你的用户名(邮箱)或密码包含@、:、/、%等特殊字符,需要用encodeURIComponent()对其进行编码,否则会破坏URI结构,导致解析时误判为端口。
    示例代码:
    const username = encodeURIComponent(process.env.MONGO_USER);
    const password = encodeURIComponent(process.env.MONGO_PASSWORD);
    const uri = `mongodb+srv://${username}:${password}@orbitXXXX.huykolo.mongodb.net/?retryWrites=true&w=majority`;
    
  • 连接代码拼接错误:检查你的index.js中URI拼接逻辑,确保没有额外添加端口相关的参数或字符串。比如不要在URI里加入port配置项,srv格式不支持单独指定端口。

正确的连接代码示例

const express = require('express');
const mongoose = require('mongoose');
require('dotenv').config();

const app = express();

const connectDB = async () => {
  try {
    const username = encodeURIComponent(process.env.MONGO_USER);
    const password = encodeURIComponent(process.env.MONGO_PASSWORD);
    const uri = `mongodb+srv://${username}:${password}@orbitXXXX.huykolo.mongodb.net/?retryWrites=true&w=majority`;
    await mongoose.connect(uri);
    console.log('MongoDB连接成功');
  } catch (err) {
    console.error('连接失败:', err.message);
    process.exit(1);
  }
};

connectDB();

// 其他Express逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:33:09