dotenv读取PORT环境变量返回undefined问题求助
问题解决:dotenv无法读取环境变量导致PORT返回undefined
核心问题
你代码里的dotenv加载时机错了——先去读取process.env.PORT,之后才调用dotenv.config()加载环境变量文件,这时候变量还没被注入到process.env里,自然拿不到值。
修复步骤
- 调整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`); });
修正变量名错误:你的.env文件里是
DB_URI,但代码里写的是process.env.URI,这会导致数据库连接字符串也拿不到,必须改成process.env.DB_URI。检查文件路径是否正确:如果你的server.js是在
backend文件夹下面,那backend/config/config.env这个路径就错了,应该写成./config/config.env(相对于server.js的路径)。比如项目结构是:
项目根目录/ ├─ backend/ │ ├─ server.js │ └─ config/ │ └─ config.env
那正确的路径就是./config/config.env,不然dotenv找不到你的环境变量文件。
- 优化.env格式(可选):虽然dotenv允许等号前后有空格,但统一写成
PORT=4000(去掉空格)可以避免一些潜在的解析问题。
额外排查点
- 重启Node进程,确保代码修改生效
- 确认config.env文件没有被误删或者移动位置
- 检查有没有其他代码在后面覆盖了process.env里的变量
内容的提问来源于stack exchange,提问作者AdaCra
相关产品推荐
相关产品推荐

