如何在运行Node.js应用时指定对应环境的配置文件?
实现Node.js多环境配置动态加载
方法一:通过npm脚本传参+动态加载配置
- 配置npm启动脚本
在项目根目录的package.json里添加对应环境的运行脚本:
{ "scripts": { "dev": "NODE_ENV=dev node app.js", "qe": "NODE_ENV=qe node app.js", // Windows环境需兼容语法,先安装cross-env:npm i cross-env --save-dev "dev:win": "cross-env NODE_ENV=dev node app.js", "qe:win": "cross-env NODE_ENV=qe node app.js" } }
- 在应用入口动态加载配置
在你的应用入口文件(比如app.js)中,根据环境变量加载对应配置:
// 读取环境标识,默认设为dev const env = process.env.NODE_ENV || 'dev'; // 动态导入对应环境的配置文件 const config = require(`./config-${env}.js`); // 验证加载结果示例 console.log(`当前加载${env}环境配置,数据库地址:`, config.db.host);
执行npm run dev会加载config-dev.js,npm run qe则加载config-qe.js。
方法二:结合dotenv管理环境标识
如果习惯用.env文件管理变量,可按以下步骤操作:
- 安装dotenv依赖
npm i dotenv --save
- 创建.env文件
在项目根目录新建.env,指定当前环境:
NODE_ENV=dev
- 修改应用入口逻辑
// 先加载dotenv解析环境变量 require('dotenv').config(); const env = process.env.NODE_ENV || 'dev'; const config = require(`./config-${env}.js`);
也可以在npm脚本里直接覆盖.env的配置:
{ "scripts": { "qe": "NODE_ENV=qe node -r dotenv/config app.js" } }
方法三:生成固定配置入口文件(可选)
如果需要生成project.js来指定环境,可写个简单脚本自动生成:
- 创建generate-config.js脚本
const fs = require('fs'); const env = process.argv[2] || 'dev'; // 生成指向对应环境配置的文件内容 const content = `module.exports = require('./config-${env}.js');`; // 写入project.js fs.writeFileSync('./project.js', content); console.log(`已生成project.js,指向${env}环境配置`);
- 配置npm脚本
{ "scripts": { "config:dev": "node generate-config.js dev", "config:qe": "node generate-config.js qe", "dev": "npm run config:dev && node app.js", "qe": "npm run config:qe && node app.js" } }
- 在应用中引入生成的文件
const config = require('./project.js');
执行npm run dev时会先生成指向config-dev.js的project.js,再启动应用。
内容的提问来源于stack exchange,提问作者User7723337
相关产品推荐
相关产品推荐

