Mongoose连接出现undefined值问题求助(Node.js新手)
解决Mongoose连接时
openUri()参数undefined的问题 问题根源
你遇到的错误是因为process.env.MONGO_URI未被正确加载——dotenv库需要显式调用config()方法才能读取.env文件中的环境变量,但你的server.js仅引入了dotenv却未执行这一步。另外还有两处模板字符串语法错误(误用单引号而非反引号),导致端口和数据库连接信息无法正确渲染。
解决方案
1. 加载dotenv配置
在server.js最顶部添加dotenv.config(),确保在使用任何环境变量前完成.env文件的加载:
修正后的server.js代码:
const express = require('express'); const dotenv = require('dotenv'); // 加载.env文件中的环境变量 dotenv.config(); const morgan = require('morgan'); const bodyparser = require('body-parser'); const path = require('path'); const connectDB = require('./server/database/connection'); const app = express(); const PORT = process.env.PORT || 8080 app.use(morgan('tiny')); connectDB(); app.use(bodyparser.urlencoded({ extended: true })); app.set("view engine", "ejs"); // 改用反引号实现模板字符串解析 app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`) });
2. 修正connection.js中的模板字符串错误
connection.js里的日志输出误用单引号,无法解析变量,改成反引号即可:
修正后的connection.js关键代码:
console.log(`Database Connected: ${con.connection.host}`);
3. 确认.env文件位置
确保.env文件和server.js处于项目根目录;如果.env在其他路径,需给dotenv.config()传入路径参数,示例:
dotenv.config({ path: './config/.env' });
验证步骤
- 重启Node.js服务
- 查看控制台输出:正常情况下会显示数据库连接成功日志,且服务端口会优先使用
.env中配置的3000(加载失败时才会 fallback 到8080)
内容的提问来源于stack exchange,提问作者user123123123
相关产品推荐
相关产品推荐

