【发布时间】:2023-01-20 07:54:45
【问题描述】:
我正在尝试将 MongoDB Atlas 连接到我的应用程序,并在尝试运行位于数据库.js(问题中的最后一个代码)。进程.env.MONGO_URI似乎被解释为未定义而非字符串,出现以下错误:“MongooseError:openUri() 的uri 参数必须是字符串,得到“未定义”。确保mongoose.connect() 或mongoose.createConnection() 的第一个参数是一个字符串。”
这是我的配置环境,我在其中复制粘贴了 Atlas 中的 MONGO_URI。
MONGO_URI = mongodb+srv://kpae:XXXX@practice.xujsvaf.mongodb.net/?retryWrites=true&w=majority
这是应用程序.js,我相信我在那里设置了运行程序的基础知识。
const express = require('express')
const dotenv = require('dotenv')
const connectDB = require('./config/db')
dotenv.config({ path: '.config/config.env' })
connectDB()
const app = express()
const PORT = process.env.PORT || 5000
app.listen(
PORT,
console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
)
这是数据库.js
const mongoose = require('mongoose')
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false
})
console.log(`MongoDB Connected: ${conn.connection.host}`)
} catch (err) {
//console.log('this is an error')
console.error(err)
process.exit(1)
}
}
module.exports = connectDB
我无法确定我的代码中的错误所在,因为我的文件似乎在根文件夹中,而 MONGO_URI 看起来像一个字符串。任何帮助表示赞赏。
【问题讨论】: