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

Node.js非根目录下Dotenv环境变量获取为undefined问题

问题分析与解决办法

核心问题有两个:

  1. 环境变量路径未指定:dotenv 默认会从当前执行的脚本所在目录加载 .env 文件,你的 mongoCon.js 放在 src/helper 目录下,它会去该目录找 .env,而你的 .env 在项目根目录,所以加载失败。
  2. 变量名不匹配:你的 .env 里是 DB_CONN_STRING,但代码里读取的是 DB_CONNECTION_STRING,名字不一致,即使路径正确也会返回 undefined。

解决步骤:

第一步:修正变量名匹配

把代码里的变量名改成和 .env 一致:

const connString = process.env.DB_CONN_STRING;

或者把 .env 里的变量名改成 DB_CONNECTION_STRING,二选一即可。

第二步:指定 .env 文件路径

在 mongoCon.js 里引入 path 模块,明确指定根目录的 .env 文件路径,有两种写法:

写法一:基于当前文件路径向上查找

const { MongoClient, ServerApiVersion } = require('mongodb');
const path = require('path');
require('dotenv').config({ 
  path: path.resolve(__dirname, '../../.env') 
});

const connString = process.env.DB_CONN_STRING;
console.log(connString);
  • __dirname 表示当前文件(mongoCon.js)所在的绝对路径,../../ 表示向上退两级目录,刚好到项目根目录。

写法二:基于项目根目录(推荐)

const { MongoClient, ServerApiVersion } = require('mongodb');
const path = require('path');
require('dotenv').config({ 
  path: path.join(process.cwd(), '.env') 
});

const connString = process.env.DB_CONN_STRING;
console.log(connString);
  • process.cwd() 是你执行 node 命令时所在的目录(也就是项目根目录),不管脚本放在哪里,只要从根目录启动项目,这个路径就不会错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:49:54