MERN栈后端开发执行npm start启动MongoDB连接报错求解
问题修复方案
你的代码存在3处可直接修复的问题,对应报错逐一调整即可:
- Mongoose连接参数拼写错误+版本兼容问题
你使用的是6.x及以上版本的Mongoose,useCreateIndex、useFindAndModify、useNewUrlParser、useUnifiedTopology这四个配置项已经默认内置支持,不需要手动传递,而且你手写的useUnifieldTopologyL存在拼写错误,直接删除mongoose.connect的第二个配置参数对象即可。
- Mongoose连接参数拼写错误+版本兼容问题
- 模板字符串语法错误
你打印端口的日志使用了普通单引号包裹模板变量,导致${PORT}不会被解析为变量值,需要把单引号替换为反引号`。
- 模板字符串语法错误
- 缺少异步错误捕获逻辑
Mongoose连接是异步操作,你没有添加错误捕获逻辑,才会触发未处理Promise拒绝的警告,需要给连接逻辑添加错误监听。
- 缺少异步错误捕获逻辑
修复后完整代码
const express = require("express"); const mongoose= require("mongoose"); const bodyParser = require("body-parser"); const cors = require("cors"); const dotenv=require("dotenv"); const app = express(); require("dotenv").config(); const PORT =process.env.PORT || 8070; app.use(cors()); app.use(bodyParser.json()); const URL = process.env.MONGODB_URL; // 移除不兼容的旧配置参数 mongoose.connect(URL); const connection = mongoose.connection; connection.once("open", () => { console.log("Mongodb Connection success!"); }) // 添加错误监听 connection.on("error", (err) => { console.log("Mongodb Connection error: ", err); }) app.listen(PORT, () => { // 替换单引号为反引号 console.log(`Server is up and running on port number: ${PORT}`) })
修复完成后重新执行npm start即可正常启动服务,完成MongoDB连接。
内容的提问来源于stack exchange,提问作者kaushalya kalansooriya
相关产品推荐
相关产品推荐

