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

Node TypeScript项目中dotenv的path配置不符合预期的原因

dotenv 路径配置异常原因解析

问题背景

项目文件结构:

My_Project/
├── package.json
├── tsconfig.json
├── dev.env
├── src/
│   ├── server.ts
│   └── app.ts
├── node_modules/
└── dist/

在src/server.ts中配置dotenv读取环境变量:

import { config } from "dotenv";

config({
  path: "../dev.env",
});

尝试通过process.env.*访问环境变量时返回undefined,但将path改为./dev.env却能正常读取。按文件层级关系,path似乎应该设为../dev.env,为什么会出现这种情况?

核心原因

dotenv的path参数是基于Node.js进程的当前工作目录(CWD),而不是代码文件所在的目录:

  • 启动项目时,你通常是在项目根目录(My_Project/)下执行命令(比如ts-node src/server.ts或npm run dev),此时当前工作目录就是根目录。
  • 使用./dev.env时,路径指向当前工作目录下的dev.env,也就是项目根目录里的目标文件,因此能正确读取。
  • 使用../dev.env时,会尝试去当前工作目录的上级目录查找文件,自然找不到,导致环境变量加载失败,返回undefined。

可靠解决方案

如果希望路径不受当前工作目录影响,可通过__dirname(当前文件所在目录的绝对路径)拼接目标文件路径:

import { config } from "dotenv";
import path from "path";

config({
  path: path.join(__dirname, "../dev.env"),
});

这样无论在哪个目录启动项目,都能精准定位到dev.env文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:05