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




