无法读取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格式问题:
- 移除每行开头的多余空格,避免解析异常;
- 把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
相关产品推荐
相关产品推荐

