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

dotenv读取PORT环境变量返回undefined问题求助

问题解决:dotenv无法读取环境变量导致PORT返回undefined

核心问题

你代码里的dotenv加载时机错了——先去读取process.env.PORT,之后才调用dotenv.config()加载环境变量文件,这时候变量还没被注入到process.env里,自然拿不到值。

修复步骤

  1. 调整dotenv加载顺序,把它放到所有读取环境变量的代码前面:
const dotenv = require('dotenv')
// 先加载环境变量文件
dotenv.config({ path: 'backend/config/config.env'});

// 再读取环境变量
const PORT = process.env.PORT
const URI = process.env.DB_URI // 这里注意:你.env里是DB_URI,代码里之前写的是URI,得改过来
const app = require('./app');
const connectDatabase = require('./config/database');

// 连接数据库
connectDatabase();
app.listen(PORT, () => {
console.log(`Server running on PORT: ${PORT} as a ${process.env.NODE_ENV} project`);
});
  1. 修正变量名错误:你的.env文件里是DB_URI,但代码里写的是process.env.URI,这会导致数据库连接字符串也拿不到,必须改成process.env.DB_URI。

  2. 检查文件路径是否正确:如果你的server.js是在backend文件夹下面,那backend/config/config.env这个路径就错了,应该写成./config/config.env(相对于server.js的路径)。比如项目结构是:

项目根目录/
├─ backend/
│  ├─ server.js
│  └─ config/
│     └─ config.env

那正确的路径就是./config/config.env,不然dotenv找不到你的环境变量文件。

  1. 优化.env格式(可选):虽然dotenv允许等号前后有空格,但统一写成PORT=4000(去掉空格)可以避免一些潜在的解析问题。

额外排查点

  • 重启Node进程,确保代码修改生效
  • 确认config.env文件没有被误删或者移动位置
  • 检查有没有其他代码在后面覆盖了process.env里的变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:18