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

TypeScript中无法读取.env环境变量问题求助

TypeScript中无法读取.env环境变量问题求助

Hey Hamza,我看了你遇到的问题——把.env和index.ts都放在src文件夹里,但环境变量一直返回undefined,这确实挺让人头疼的。我来帮你分析下原因,看看怎么解决~

问题根源

问题出在dotenv.config()的默认行为上:dotenv默认会去项目根目录查找.env文件,而你的.env是放在src文件夹里的,所以它找不到对应文件,自然读不到变量值啦。

解决方案

你需要在调用dotenv.config()时,明确指定.env文件的路径。可以借助Node.js的path模块动态获取正确路径,这样不管项目结构怎么变化(比如编译后),路径都不会出错。

修改后的代码示例:

import dotenv from 'dotenv';
import path from 'path'; // 新增导入path模块
import express from "express";
import { dbconnection } from './DB/Connection.js';
import morgan from 'morgan';
import MainRouter from './Routes/MainRouter.js';
import cookieParser from 'cookie-parser';

// 配置dotenv,指定src文件夹下的.env路径
dotenv.config({ 
  path: path.resolve(__dirname, '.env') 
});

const port = process.env.PORT || 3000;
const App = express();

// 后续代码保持不变...

额外检查点

除了路径问题,你也可以排查下这几个点:

  • 确认.env文件格式正确:变量名和值之间不要加空格,比如MONGODB_URL=mongodb://localhost:27017/yourDB,不要写成MONGODB_URL = xxx或给值加不必要的引号(除非值里有特殊字符)。
  • 确认已正确安装dotenv:如果之前没安装,运行npm install dotenv或yarn add dotenv。
  • 若用ts-node/ts-node-dev运行,检查tsconfig.json的compilerOptions:确保module设为CommonJS,或启用了esModuleInterop(你用ES模块导入的话,这一步大概率没问题,但可以确认下)。

这样调整后,应该就能正确读取到src文件夹里的.env变量了,你可以试试看~

备注:内容来源于stack exchange,提问作者Hamza Hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:18:10