Dotenv tutorial

Dotenv 教程展示了如何使用 dotenv 模块在 JavaScript 中加载环境变量。

dotenv 模块

dotenv 是一个零依赖模块,可将环境变量从 .env 文件加载到 process.env。将配置与代码分开存储在环境中基于十二因素应用程序方法。

环境变量

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

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

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

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

  • HTTP 端口
  • 数据库连接字符串
  • 静态文件位置
  • 外部服务端点

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

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

.env 解析规则

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

  • BASIC=basic 变为 {BASIC: ‘basic’}
  • 空行被跳过
  • 注释以 # 开头
  • 空值变为空字符串; BASIC= 变为 {BASIC: ”}
  • 保留内引号

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

Dotenv 设置

我们使用dotenv 安装npm 模块。

$ node -v
v11.5.0

我们使用 Node 版本 11.5.0。

$ npm init -y

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

$ npm i dotenv

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

Dotenv 简单例子

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

HOST = localhost
DATABASE = ydb
PORT = 5432

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

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。通过这样做,我们不需要在应用程序中要求和加载 dotenv。

HOST = localhost
DATABASE = ydb
PORT = 5432

我们有相同的变量。

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);

在这个例子中,我们不需要dotenv 模块。此外,我们读取了一个在操作系统环境中设置的变量。

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

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

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

列出所有 JavaScript 教程。

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏