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

无法读取config.env文件变量的后端开发问题求助

问题:无法读取config.env中的环境变量,输出undefined

我是后端开发初学者,config.env文件与代码文件位于同一目录,但无法读取其中的变量,使用console.log输出显示为undefined;尝试指定文件路径后问题仍未解决,且console.log(process.env.USERNAME)输出“hp”,而该变量并未在config.env中定义。

相关代码

const mongoose = require('mongoose');
const dotenv = require('dotenv');
const app = require('./app');

dotenv.config();

console.log(process.env.USERNAME);
console.log(process.env.NODE_ENV);

console.log(process.env.DATABASE);
const DB = process.env.DATABASE.replace(
  '<PASSWORD>',
  process.env.DATABASE_PASSWORD
);

mongoose
  .connect(DB, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
  })
  .then(() => {
    console.log(DB.connections);
    console.log('DATABASE CONNECTED SUCCESSFULLY :)');
  });

// STARTING SERVER
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log('Server is listening on port 3000!!');
});

config.env文件内容

NODE_ENV=development
 PORT=3000
 MINE_USERNAME=mufazzal
 PASSWORD=123456
 DATABASE=mongodb+srv://mufazzala16:<PASSWORD>@cluster0.zcxfqhq.mongodb.net/? 
 retryWrites=true&w=majority&appName=Cluster0
 DATABASE_PASSWORD=Gujjar7434

解决方案

  • 调整dotenv加载顺序:必须先加载dotenv,再引入其他依赖。当前代码先require了mongoose和app,此时这些模块已经执行,环境变量还没加载,所以读不到。修改后代码:

    const dotenv = require('dotenv');
    // 优先加载环境变量
    dotenv.config();
    // 再引入其他依赖
    const mongoose = require('mongoose');
    const app = require('./app');
    
  • 修正config.env格式问题:

    1. 移除每行开头的多余空格,避免解析异常;
    2. 把DATABASE变量的换行去掉,保证完整的连接字符串在同一行:
      NODE_ENV=development
      PORT=3000
      MINE_USERNAME=mufazzal
      PASSWORD=123456
      DATABASE=mongodb+srv://mufazzala16:<PASSWORD>@cluster0.zcxfqhq.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0
      DATABASE_PASSWORD=Gujjar7434
      
  • 解释process.env.USERNAME的“hp”输出:这个值来自系统级环境变量,不是你config.env里的。你在config.env里定义的是MINE_USERNAME,如果要读取自己定义的变量,应该用process.env.MINE_USERNAME。

  • 显式指定文件路径(可选):如果上述步骤无效,明确指定config.env的路径确保dotenv能找到它:

    dotenv.config({ path: './config.env' });
    
  • 确认dotenv已安装:检查项目依赖里是否有dotenv,没有的话运行npm install dotenv完成安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:00:08