You need to enable JavaScript to run this app. 如何使用dotenv在Node.js中加载.env和.env.local的环境变量
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dotenv在Node.js中加载.env和.env.local的环境变量

多环境变量文件加载实现方案

需求可实现性结论

该需求完全可以实现,实现逻辑简单清晰。

使用dotenv加载双文件的方法

dotenv支持手动指定待加载的文件路径,只需按优先级先后加载两个文件即可,同名称环境变量会以最后加载的文件中的值为准,符合「本地配置覆盖公共配置」的常规使用逻辑。
操作步骤:

  1. 安装dotenv依赖
    npm install dotenv
  2. 编写加载逻辑,建议增加本地文件存在性判断避免文件不存在时报错:
const dotenv = require('dotenv');
const fs = require('fs');

// 先加载公共通用环境变量
dotenv.config({ path: '.env' });

// 后加载本地私有环境变量,重复key会自动覆盖公共配置
if (fs.existsSync('.env.local')) {
  dotenv.config({ path: '.env.local' });
}

注意:加载顺序直接决定变量优先级,不要将顺序搞反导致本地配置被公共配置覆盖

不使用dotenv的业内通用方案

业内没有统一的第三方替代方案,大多基于所处技术栈使用内置能力实现,主流方案如下:

  • 上层框架原生支持:绝大多数Node.js生态的应用框架都内置了多env文件加载能力,无需手动引入dotenv
    • Next.js:默认按优先级 .env.local > .env.[环境标识] > .env 自动加载,无需额外配置
    • NestJS:通过内置的@nestjs/config模块,初始化时指定多个env文件路径即可
      import { ConfigModule } from '@nestjs/config';
      
      @Module({
        imports: [
          ConfigModule.forRoot({
            envFilePath: ['.env.local', '.env'],
            isGlobal: true
          })
        ]
      })
      export class AppModule {}
      
    • Vite生态项目:无论是前端还是搭配Node.js后端,都内置了env解析能力,按规则命名文件放在根目录即可自动按优先级加载
  • 原生Node.js手动实现:如果不想引入任何第三方依赖,可以自行实现解析逻辑,读取两个文件内容拆分key-value后写入process.env,后写入的同key值会自动覆盖前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:27:03