node项目中使用dotenv库来解析不同文件下的环境变量

561 阅读1分钟

在写node后端项目时,我们也需要区分开发环境和生产环境,那么如何解析不同环境下的环境变量呢?

前端通过--mode 来区分开发环境或生产环境,然后执行不同的命令,构建工具判断当前环境为我们解析出了相应的环境变量。那么下面我们就模仿这种思路来实现后端项目的环境变量的解析。

一、安装dotenv

npm i dotenv

二、设置环境变量

在package.json文件中定义执行脚本,使用set设置NODE_ENV的值


  "scripts": {
    "dev": "set NODE_ENV=development&& nodemon src/main.js",
    "pro": "set NODE_ENV=production&& nodemon src/main.js"
  },

三、创建.env文件

image.png

编辑不同环境文件下的变量

APP_PORT = 18080
APP_HOST = http://localhost

MYSQL_HOST = localhost
MYSQL_PORT = 3306
MYSQL_USER = root
MYSQL_PASSWORD = 123456
MYSQL_DATABASE = abcde

三、根据NODE_ENV来加载特定的.env文件

const dotenv = require("dotenv");
const fs = require("fs");
const path = require("path");

// 读取到环境变量
console.log(process.env.NODE_ENV, "环境变量");
const env = process.env.NODE_ENV;
let config;
if (env === "development") {
  config = dotenv.parse(fs.readFileSync(".env.development"));
} else {
  config = dotenv.parse(fs.readFileSync(".env.production"));
}
console.log(config, "config");
for (const k in config) {
  process.env[k] = config[k];
}