You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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' });

验证步骤

  1. 重启Node.js服务
  2. 查看控制台输出:正常情况下会显示数据库连接成功日志,且服务端口会优先使用.env中配置的3000(加载失败时才会 fallback 到8080)

内容的提问来源于stack exchange,提问作者user123123123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:33:34