0%

How node.js handle environment variables

How node.js handle environment variables

The following content was generated by “文心一言”, Have fun!

在 Node.js 中处理环境变量通常使用 process.env 对象。当你想要从不同的配置文件中加载环境变量时,需要一些额外的步骤。通常,我们不直接通过 Node.js 加载 .local.env或其他配置文件,而是通过一些库(如 dotenv)来完成这个任务。

使用 dotenv 处理环境变量

安装 dotenv:

1
npm install dotenv

在代码中使用 dotenv:
你可以在代码的顶部require dotenv,并使用它加载环境变量。(默认情况下, dotenv会自动寻找项目根目录下的.env文件,如果想指定其他配置文件,可以通过path参数来控制)

1
require('dotenv').config();

创建配置文件:
通常,你可以创建一个 .env 文件在你的项目的根目录。这个文件可以包含环境变量,如:

.env 文件

1
2
PORT=3000  
DATABASE_URL=mysql://user:password@localhost/dbname

.local.env文件通常是用于本地开发的环境变量,这些变量不应该被提交到版本控制系统中(如 git)。你可以在你的.gitignore文件中添加.local.env 来确保它不会被提交。

访问环境变量:
你可以使用 process.env 对象来访问你加载的环境变量。例如:

1
2
const port = process.env.PORT;  
const databaseUrl = process.env.DATABASE_URL;

配置文件的优先级

当你有多个配置文件时,你需要确定哪个文件的优先级更高。例如,你可能有一个通用的 .env 文件,还有一个针对本地开发的 .local.env 文件。

通常,你可以在加载配置文件时确定优先级。例如,你可以首先加载 .local.env,然后再加载 .env。这样,.local.env 中的设置将覆盖 .env 文件中的设置。使用 dotenv 时,你可以这样做:

1
2
require('dotenv').config({ path: '.local.env' });  
require('dotenv').config();

示例:处理端口环境变量

假设你在 .env 文件中有以下设置:

1
PORT=3000

在 .local.env 文件中有以下设置:

1
PORT=8080

你可以这样加载和使用它们:

1
2
3
4
5
6
7
8
9
10
require('dotenv').config({ path: '.local.env' }); // 加载 .local.env  
require('dotenv').config(); // 加载 .env

const express = require('express');
const app = express();
const port = process.env.PORT; // port = 8080,因为 .local.env 中的设置将覆盖 .env 中的设置。

app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});

在这个例子中,服务器将运行在 8080 端口上,因为 .local.env 中的 PORT 设置覆盖了 .env 文件中的设置。