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

为何dotenv无法加载环境变量?技术排查求助

dotenv加载环境变量返回undefined的解决办法

问题说明

我的项目目录结构:

  • AirlineManagementProject(根目录)
    • FlightsAndSearch
      • src
        • index.js
        • .env

在使用dotenv加载环境变量时,.env文件里明明定义了变量,但读取process.env.XXX始终返回undefined。index.js核心逻辑是先引入dotenv,再尝试打印process.env.PORT,结果为undefined。

我已经试过三种加载方式:

  • require('dotenv').config();
  • require('dotenv').config({path:'C:\Users\xuios\Desktop\AirlineManagementProject\FlightsAndSearch\src\.env'}); // 绝对路径
  • require('dotenv').config({path:'FlightsAndSearch\src\.env'}); // 相对路径

.env文件里定义了PORT=3000等变量,但始终加载失败。

解决步骤

  1. 修复路径转义问题
    Windows系统下路径里的反斜杠\需要转义成\\,或者直接用正斜杠/,否则会被当成转义字符解析。比如绝对路径改成:

    require('dotenv').config({path:'C:\\Users\\xuios\\Desktop\\AirlineManagementProject\\FlightsAndSearch\\src\\.env'});
    // 用正斜杠更省心
    require('dotenv').config({path:'C:/Users/xuios/Desktop/AirlineManagementProject/FlightsAndSearch/src/.env'});
    

    相对路径同理,把\换成/:

    require('dotenv').config({path:'./FlightsAndSearch/src/.env'}); // 从项目根目录启动时用这个
    
  2. 确认相对路径基准
    相对路径是相对于启动node命令的目录,不是index.js所在目录。如果在AirlineManagementProject根目录下运行node FlightsAndSearch/src/index.js,相对路径要写成./FlightsAndSearch/src/.env;如果进入FlightsAndSearch目录后运行node src/index.js,路径就是./src/.env。

  3. 检查.env文件格式

    • 变量定义不要加引号,正确写法是PORT=3000,别写成PORT="3000"
    • 每行只写一个变量,不要在变量名或值前后加多余空格
    • 检查Windows下文件是否被自动添加.txt后缀(比如实际是.env.txt),需显示文件扩展名确认
  4. 确保加载时机正确
    把require('dotenv').config()放在代码最开头,在任何其他依赖引入或变量使用之前执行,避免变量未加载就被调用。

  5. 更新dotenv版本
    运行npm list dotenv查看当前版本,若版本过旧,执行npm install dotenv@latest更新到最新版,旧版本可能存在路径解析bug。

内容的提问来源于stack exchange,提问作者Vatsal A Mehta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:07