首页 > 解决方案 > 当我尝试连接到 mongodb 得到这个错误

问题描述

这是我的 NodeJS 代码

const express = require('express'); 
const cors = require('cors'); 
const mongoose = require('mongoose'); 
require('dotenv').config(); 
const app = express(); 
const port = process.env.PORT || 6000; 
app.use(cors()); 
app.use(express.json()); 

const uri = process.env.ATLAS_URI; 
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true } ); 

const connection = mongoose.connection; 
connection.once('open', () => { 
    console.log("MongoDB database connection established successfully"); 
}) 

app.listen(port, () => { console.log(`Server is running on port: ${port}`); });

这是.env文件:

ATLAS_URI = mongodb+srv://xxxxxx:xxxxxx@cluster0.jnk3w.mongodb.net/xxxxxx?retryWrites=true&w=majority

这是错误日志

(节点:3812)UnhandledPromiseRejectionWarning:MongoParseError:Object.parseOptions 不支持选项 usecreateindex(D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongodb\lib\connection_string.js:281:15)

at new MongoClient (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongodb\lib\mongo_client.js:62:46)
at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\connection.js:785:16
at new Promise (<anonymous>)
at NativeConnection.Connection.openUri (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\connection.js:782:19)
at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\index.js:330:10
at D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)

at Mongoose._promiseOrCallback (D:\Front_end\MERN_STACK\Trackerapp\tracker\backend\node_modules\mongoose\lib\index.js:1151:10)

node --trace-warnings ...用于显示警告的创建位置)(节点:3812) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:2)(节点:3812)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

标签: node.jsmongodbexpress

解决方案


现在在 mongoose 的 > 6 版本中,你不需要添加 useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true, 你可以简单地写 {mongoose.connect(uri, {});}


推荐阅读