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

VPS上NodeJS连接MongoDB后请求报错:HTTP访问MongoDB原生驱动端口

问题解决:访问接口时出现MongoDB HTTP访问错误

核心原因

你发起请求时用的端口是MongoDB的服务端口(比如默认的27017),而非NodeJS应用监听的端口,导致请求直接打到了MongoDB服务上,因此出现该错误提示。

解决步骤

1. 区分NodeJS端口与MongoDB端口

  • MongoDB默认端口为27017(若修改过配置则用自定义端口),这是数据库服务的通信端口,不能用来访问NodeJS接口。
  • 找到你NodeJS代码中app.listen()指定的端口(如3000、8080这类),这才是访问接口的正确端口。

2. 修正接口访问地址

将请求地址从http://serverip:mongodb_port/fetchData改为http://serverip:nodejs_port/fetchData,例如NodeJS用3000端口的话,正确地址是http://serverip:3000/fetchData。

3. 修复代码拼写错误

你的连接代码里module.export是拼写错误,应改为module.exports,否则其他模块无法正确引用数据库连接对象:

// 错误写法
module.export = connection;

// 正确写法
module.exports = connection;

4. 验证数据库连接有效性

虽然控制台输出连接成功,可添加简单查询确认连接真实可用:

const mongoose = require('mongoose');
const URL = "mongodb://serverIp:27017/dbname";

const connection = mongoose.connect(URL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  serverSelectionTimeoutMS: 5000,
  family:4
})
.then(async () => {
  console.log("Successfully Connected DB");
  // 测试查询目标集合的文档数量
  const docCount = await mongoose.connection.collection('your_collection_name').countDocuments();
  console.log(`集合文档数:${docCount}`);
})
.catch((e) => console.log("DB CONNECTION ERROR: "+e));

module.exports = connection;

5. 检查VPS防火墙配置

确保NodeJS监听的端口在VPS防火墙中处于开放状态,允许外部访问(比如Linux系统用ufw allow 3000命令开放3000端口,具体命令根据VPS系统调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:15:33