Node.js连接MongoDB启动报错:端口占用及Mongoose警告解决求助
问题修复方案
一、解决端口占用错误(Error: listen EADDRINUSE: address already in use :::5000)
- 杀死占用5000端口的进程
- Windows系统:
netstat -ano | findstr :5000 taskkill /PID <查询到的进程PID> /F - macOS/Linux系统:
lsof -ti:5000 | xargs kill -9
- Windows系统:
- 更换端口号
修改代码中的端口定义,换成未被占用的端口,比如:const port = process.env.PORT || 5001;
二、消除Mongoose strictQuery版本警告
Mongoose 6+版本默认启用strictQuery,旧配置项useCreateIndex已被废弃,更新连接配置即可:
mongoose.connect(uri, { useNewUrlParser: true, strictQuery: true // 显式配置消除警告,保持默认严格查询规则 });
若业务需要关闭严格查询,可将strictQuery设为false,但不建议这么做,避免数据写入时出现意外字段。
优化后的完整代码
const express = require('express'); const cors = require('cors'); const mongoose = require('mongoose'); require('dotenv').config(); const app = express(); const port = process.env.PORT || 5001; app.use(cors()); app.use(express.json()); // 连接MongoDB const uri = process.env.ATLAS_URI; mongoose.connect(uri, { useNewUrlParser: true, strictQuery: true }); const connection = mongoose.connection; connection.once('open', () => { console.log("MongoDB database connection established successfully"); }) // 导入路由(按需启用) //const exercisesRouter = require('./routes/exercises'); //const usersRouter = require('./routes/users'); // 使用路由(按需启用) //app.use('/exercises', exercisesRouter); //app.use('/users', usersRouter); app.listen(port, () => { console.log(`Server is running on port: ${port}`); });
内容的提问来源于stack exchange,提问作者Lakindu Widuranga Alvis
相关产品推荐
相关产品推荐

