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

使用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版本

    1. 检查package.json中是否添加了"type": "module",这是Node.js启用ES6模块的必要配置:
      {
        "type": "module"
      }
      
    2. 确保安装最新版dotenv,执行命令更新:
      npm install dotenv@latest
      
  • 排查.env文件内容错误
    避免以下错误写法:

    • 错误:PORT = 8000(变量名和值之间有空格)
    • 错误:PORT="8000"(用引号包裹值,不符合规范)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:05:03