dotenv
教程展示了如何使用dotenv
模块在 JavaScript 中加载环境变量。
dotenv
模块
dotenv
是一个零依赖模块,可将环境变量从.env
文件加载到process.env
中。 将配置存储在与代码分开的环境中是基于十二因子应用方法的。
环境变量
环境变量使我们能够与代码库分开管理应用的配置。 分开的配置使我们的应用更容易在不同的环境中部署。
环境变量是应用外部的变量,它们驻留在运行生产应用的 OS 或容器中。 由于开发大部分是在本地计算机上完成的,因此环境变量可以通过set
或export
等命令放置到本地环境变量中,或者存储在本地.env
文件中。
按照惯例,这些变量都写在大写字母(例如端口)。
存储在环境变量中的配置数据的常见示例包括:
- HTTP 端口
- 数据库连接字符串
- 静态文件的位置
- 外部服务的端点
绝对不要将.env
文件提交到源代码存储库。 我们必须将文件放入.gitignore
文件。 (使用 git 时。)
现代编辑器支持.env
文件。 例如,code
具有 DotENV 扩展名。
dotenv
解析规则
以下是一些基本的解析引擎规则:
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
文件中读取配置数据。
.env
HOST = localhost
DATABASE = ydb
PORT = 5432
我们有三个变量:HOST
,DATABASE
和PORT
。 我们使用大写字母来遵守命名约定。
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
。 这样,我们不需要在应用中要求和加载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);
在此示例中,我们不需要dotenv
模块。 另外,我们读取在 OS 环境中设置的变量。
$ set USER=user7
$ node -r dotenv/config preload.js
localhost
ydb
5432
user7
在 Windows 上,我们使用set
定义环境变量。 (在 Linux 上使用export
)。 变量打印确定。
在本教程中,我们使用了dotenv
模块从.env
文件读取环境变量。
您可能也对以下相关教程感兴趣: Moment.js 教程,从 JavaScript 中的 URL 读取 JSON , Node Sass 教程, Lodash 教程 或列出所有 JavaScript 教程。