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

Node.js中如何区分.env.production与.env.staging?多环境.env加载方案

Node.js 区分并加载对应环境的 .env 文件(使用 dotenv)

下面是几种实用的实现方法,帮你在生产和staging服务器上自动加载对应的环境配置文件:

方法1:手动判断环境并加载对应文件

利用NODE_ENV环境变量区分环境,在代码里指定要加载的.env文件路径:

  1. 确保已安装dotenv:
npm install dotenv
  1. 在项目入口文件(比如app.js)中添加以下代码:
const dotenv = require('dotenv');
// 获取当前环境,默认设为development防止未指定
const currentEnv = process.env.NODE_ENV || 'development';

// 根据环境加载对应的.env文件
dotenv.config({ path: `.env.${currentEnv}` });

// 测试是否加载成功
console.log(`当前运行环境: ${currentEnv}`);
console.log(`API地址: ${process.env.API_URL}`);
  1. 启动服务时指定环境:
  • 生产服务器:
NODE_ENV=production node app.js
  • Staging服务器:
NODE_ENV=staging node app.js

(Windows系统用set NODE_ENV=staging && node app.js)

方法2:使用 dotenv-flow 自动匹配环境

dotenv-flow是dotenv的扩展包,能自动根据NODE_ENV加载对应环境的配置文件,省去手动判断的步骤:

  1. 安装dotenv-flow:
npm install dotenv-flow
  1. 入口文件只需一行代码:
require('dotenv-flow').config();

// 直接使用环境变量即可
console.log(`当前环境: ${process.env.NODE_ENV}`);
console.log(`数据库连接地址: ${process.env.DB_HOST}`);

它的加载优先级是:.env.${NODE_ENV} > .env(如果存在基础.env文件,会先加载它,再用环境文件覆盖)。启动命令和方法1一致。

方法3:通过package.json脚本简化启动命令

在package.json中配置启动脚本,避免每次手动输入环境变量:

{
  "scripts": {
    "start:prod": "NODE_ENV=production node app.js",
    "start:staging": "NODE_ENV=staging node app.js"
  }
}

启动时直接运行:

  • 生产环境:npm run start:prod
  • Staging环境:npm run start:staging

关键注意事项

  • 把.env.production、.env.staging添加到.gitignore,绝对不要提交到代码仓库,防止敏感信息泄露。
  • 如果服务器上需要持久化设置NODE_ENV,可以在服务器的环境变量配置中(比如Linux的~/.bashrc或~/.profile)添加export NODE_ENV=production,这样启动时不用每次指定。
  • 环境变量加载后,整个Node进程生命周期内都可以通过process.env访问,无需重复加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:45:53