ZetCode

Dotenv 教程

最后修改于 2023 年 10 月 18 日

在本文中,我们将展示如何使用 dotenv 模块在 JavaScript 中加载环境变量。

dotenv 模块

dotenv 是一个零依赖模块,它将环境变量从 .env 文件加载到 process.env 中。 将配置存储在代码之外的环境中是基于十二因素应用方法论的。

环境变量

环境变量允许我们独立于我们的代码库来管理应用程序的配置。 分离配置使我们的应用程序更容易在不同的环境中部署。

环境变量是应用程序外部的变量,它们存在于生产应用程序运行的操作系统或容器中。 由于开发主要在本地机器上完成,因此环境变量要么使用 setexport 等命令放入本地环境变量中,要么存储在本地 .env 文件中。

按照惯例,变量用大写字母书写 (例如 PORT)。

存储在环境变量中的常见配置数据示例包括

.env 文件永远不应该提交到源代码存储库。 我们必须将该文件放入 .gitignore 文件中。(在使用 git 时。)

现代编辑器支持 .env 文件; 例如,code 有 DotENV 扩展。

.env 解析规则

以下是一些基本的解析引擎规则

现有的环境变量不会被修改; 它们被跳过。

Dotenv 设置

我们使用 npm 安装 dotenv 模块。

$ node -v
v11.5.0

我们使用 Node 版本 11.5.0。

$ npm init -y

我们启动一个新的 Node 应用程序。

$ npm i dotenv

我们使用 npm i dotenv 命令安装 dotenv。

Dotenv 简单示例

在第一个示例中,从 .env 文件中读取配置数据。

.env
HOST = localhost
DATABASE = ydb
PORT = 5432

我们有三个变量:HOSTDATABASEPORT。 我们通过使用大写字母来遵守命名约定。

simple.js
require('dotenv').config()

const hostname = process.env.HOST;
const database = process.env.DATABASE;
const port = process.env.PORT;

console.log(hostname);
console.log(database);
console.log(port);

在示例中,我们读取这三个变量并将它们打印到控制台。

require('dotenv').config()

我们加载 dotenv 库并调用 config 方法,该方法将变量加载到 process.env 中。

const hostname = process.env.HOST;
const database = process.env.DATABASE;
const port = process.env.PORT;

我们从 process.env 中读取这三个变量。

console.log(hostname);
console.log(database);
console.log(port);

最后,将变量打印到终端。

$ node simple.js
localhost
ydb
5432

Dotenv 预加载

我们可以使用 --require (-r) 命令行选项来预加载 dotenv。 通过这样做,我们不需要在应用程序中 require 和加载 dotenv。

.env
HOST = localhost
DATABASE = ydb
PORT = 5432

我们有相同的变量。

preload.js
const hostname = process.env.HOST;  
const database = process.env.DATABASE;  
const port = process.env.PORT;
const user = process.env.USER;

console.log(hostname);
console.log(database);
console.log(port);
console.log(user);

在此示例中,我们不 require dotenv 模块。 此外,我们读取在操作系统环境中设置的变量。

$ set USER=user7
$ node -r dotenv/config preload.js
localhost
ydb
5432
user7

在 Windows 上,我们使用 set 定义环境变量。(在 Linux 上使用 export)。 这些变量被正确打印出来。

来源

dotenv Github 页面

在本文中,我们使用 dotenv 模块从 .env 文件中读取环境变量。

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

查看 所有 JavaScript 教程。