一、环境对象说明
process
process 对象是一个(global)全局变量,提供有关当前 Node.js 进程的信息并对其进行控制。
process官方文档
process.env
process.env 属性会返回包含用户环境的对象,能返回项目运行所在环境的一些信息。
process.env官方文档
process.env.NODE_ENV
NODE_ENV是一个用户自定义的变量,它的用途是区分生产环境或开发环境。
process.argv
process.env 属性返回数组,其中包含启动 Node.js 进程时传入的命令行参数。
第一个元素将是 process.execPath。 如果需要访问 argv[0] 的原始值,请参阅 process.argv0。
第二个元素将是正在执行的 JavaScript 文件的路径。
其余元素将是任何其他命令行参数。
process.argv官方文档
二、环境变量配置方式
方式一:通过加载.env文件方式配置环境变量
1.在项目根目录创建 .env 文件,以 NAME = VALUE 的形式添加环境变量
# .env
NODE_ENV = 'production'
2.安装dotenv模块,通过它将 .env 文件加载到环境中
npm install dotenv --save-dev
3.在项目入口文件顶部引入并执行配置
const dotenv = require("dotenv");
dotenv.config();
4.在项目中使用
console.log(process.env.NODE_ENV);
方式二:通过package.json配置
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "export NODE_ENV='development' && node app.js",
"build": "export NODE_ENV='production' && node app.js"
}
注:在Mac和Linux上使用export, 在windows上export要换成set
三、示例:传递不同参数加载不同环境变量配置
1.初始化项目
在项目根目录终端中执行命令初始化
安装dotenv模块,用来加载环境变量配置文件
npm init -y
npm install dotenv -S
2.创建环境变量配置文件
在项目根目录下创建.env.developmen和.env.production文件
.env.developmen
NODE_ENV=development
APP_BASE_URL=http://127.0.0.1
.env.production
NODE_ENV=production
APP_BASE_URL=http://www.lihefei.com
3.编写服务程序
在项目根目录下创建index.js
index.js
const dotenv = require("dotenv"); // 环境变量加载模块
const args = process.argv; // 获取node命令参数,得到的是一个数组
// 例如执行命令:node index.js --mode dev 得到的参数结果是:['node', 'index.js', '--mode', 'dev']
// 根据命令参数组合环境变量文件名
// 如果命令参数数组长度大于3,且第三个参数是--mode,且第四个参数有值就拼接环境变量文件名,不满足前面三个条件则默认为.env.production
const envPath = (args.length > 3 && args[2] === '--mode' && args[3]) ? ('.env.' + args[3]) : '.env.production';
// 例如命令是node index.js 不带参数,envPath的值为:'.env.production'
// 例如命令是node index.js --mode developmen 有带参数,envPath的值为:'.env.developmen'
dotenv.config({ path: envPath }); // 加载配置文件
console.log(process.env.APP_BASE_URL); // 打印环境变量配置的APP_BASE_URL值
4.运行程序打印APP_BASE_URL值
1.执行不带参数的node命令
node index.js
输出的结果是:http://www.lihefei.com
2.执行带参数的node命令
node index.js --mode developmen
输出的结果是:http://127.0.0.1
5.在package.json中配置脚本打包命令
1.编辑package.json文件,在scripts属性中新增build、dev命令
"scripts": {
"build": "node build/index.js",
"dev": "node build/index.js --mode development"
}
2.在项目根目录终端中执行打包命令
npm run dev
npm run build
输出结果:
http://127.0.0.1
http://www.lihefei.com
本文详细介绍了如何通过`.env`文件和`package.json`配置环境变量,以及如何根据命令行参数动态加载不同环境。通过示例展示了如何在Node.js项目中区分开发和生产环境,实现灵活的环境切换。
3764

被折叠的 条评论
为什么被折叠?



