使用ES6获取Dotenv环境变量时返回UNDEFINED问题求助
解决ES6环境下Dotenv读取process.env.PORT返回undefined的问题
以下是排查和解决的关键步骤:
检查.env文件的位置与命名
确保项目根目录下存在名为.env的文件(注意文件名开头的点不能省略),且文件内变量格式正确:PORT=8000不要在变量名和值之间加空格,也不要用引号包裹值。
显式指定.env文件路径
ES6模块环境中默认没有__dirname变量,需要通过import.meta.url获取当前文件目录,再指定.env的路径:import express from 'express'; import dotenv from 'dotenv'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // 明确指定.env文件路径 dotenv.config({ path: `${__dirname}/.env` }); console.log(process.env.PORT); // 现在应该能正确输出值 const app = express(); app.get('/', (req, res) => { res.send("<h1> Welcome to my app</h1>"); }); app.listen(process.env.PORT || 8000, () => { console.log(`Server running on port number ${process.env.PORT || 8000}`); });确认ES模块配置与dotenv版本
- 检查
package.json中是否添加了"type": "module",这是Node.js启用ES6模块的必要配置:{ "type": "module" } - 确保安装最新版dotenv,执行命令更新:
npm install dotenv@latest
- 检查
排查.env文件内容错误
避免以下错误写法:- 错误:
PORT = 8000(变量名和值之间有空格) - 错误:
PORT="8000"(用引号包裹值,不符合规范)
- 错误:
内容的提问来源于stack exchange,提问作者Paras Chouhan
相关产品推荐
相关产品推荐

