You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Node.js中如何管理.env文件中的多环境变量并按需切换使用

切换开发/生产环境变量的几种实用方案

嘿,这个需求在日常开发里太普遍了,我给你分享几个简单易上手的方法,都是团队里常用的:

方法1:拆分不同环境的.env文件

这是最规范的做法,把不同环境的变量分开存放,避免在一个文件里混着写:

  • 新建.env.development文件,内容:PORT=3000
  • 新建.env.production文件,内容:PORT=3030

然后在你的代码里,根据当前环境加载对应的文件(需要先安装dotenv包:npm install dotenv):

const dotenv = require('dotenv');
// 根据NODE_ENV值加载对应环境的配置文件,默认用开发环境
const envFile = `.env.${process.env.NODE_ENV || 'development'}`;
dotenv.config({ path: envFile });

// 直接使用process.env.PORT即可
console.log('当前端口:', process.env.PORT);

启动项目时,通过NODE_ENV指定环境:

# 开发环境
NODE_ENV=development node app.js

# 生产环境
NODE_ENV=production node app.js

如果是Windows系统,环境变量的设置方式略有不同,推荐用cross-env包实现跨平台兼容:

# 先安装cross-env
npm install cross-env --save-dev

# 启动命令
cross-env NODE_ENV=development node app.js

方法2:在单个.env文件里区分变量名

如果不想拆分文件,也可以在同一个.env里给不同环境的变量加前缀:

# .env文件内容
DEV_PORT=3000
PROD_PORT=3030

然后在代码里根据NODE_ENV判断使用哪个变量:

// 先加载.env文件
require('dotenv').config();

const currentEnv = process.env.NODE_ENV || 'development';
const port = currentEnv === 'production' 
  ? process.env.PROD_PORT 
  : process.env.DEV_PORT;

console.log('当前端口:', port);

启动时同样通过NODE_ENV指定环境,和方法1的启动命令一致。

方法3:用npm scripts简化启动命令

为了避免每次启动都敲长长的命令,可以在package.json里配置脚本:

{
  "scripts": {
    "start:dev": "cross-env NODE_ENV=development node app.js",
    "start:prod": "cross-env NODE_ENV=production node app.js"
  }
}

之后启动项目就只需要:

# 开发环境
npm run start:dev

# 生产环境
npm run start:prod

这样团队成员也不用记复杂的命令,直接用脚本即可轻松切换环境~

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

火山引擎 最新活动