ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# `dotenv`教程 > 原文: [http://zetcode.com/javascript/dotenv/](http://zetcode.com/javascript/dotenv/) `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`一起安装。 ```js $ node -v v11.5.0 ``` 我们使用 Node 版本 11.5.0。 ```js $ npm init -y ``` 我们启动一个新的 Node 应用。 ```js $ npm i dotenv ``` 我们使用`npm i dotenv`命令安装`dotenv`。 ## `dotenv`简单示例 在第一个示例中,从`.env`文件中读取配置数据。 `.env` ```js HOST = localhost DATABASE = ydb PORT = 5432 ``` 我们有三个变量:`HOST`,`DATABASE`和`PORT`。 我们使用大写字母来遵守命名约定。 `simple.js` ```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); ``` 在示例中,我们读取了三个变量并将它们打印到控制台。 ```js require('dotenv').config() ``` 我们加载`dotenv`库,并调用`config()`的方法,它加载变量进入`process.env`。 ```js const hostname = process.env.HOST; const database = process.env.DATABASE; const port = process.env.PORT; ``` 我们从`process.env`中读取了三个变量。 ```js console.log(hostname); console.log(database); console.log(port); ``` 最后,变量被打印到终端。 ```js $ node simple.js localhost ydb 5432 ``` 这是输出。 ## `dotenv`预加载 我们可以使用`--require`(`-r`)命令行选项来预加载`dotenv`。 这样,我们不需要在应用中要求和加载`dotenv`。 `.env` ```js HOST = localhost DATABASE = ydb PORT = 5432 ``` 我们有相同的变量。 `preload.js` ```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 环境中设置的变量。 ```js $ set USER=user7 $ node -r dotenv/config preload.js localhost ydb 5432 user7 ``` 在 Windows 上,我们使用`set`定义环境变量。 (在 Linux 上使用`export`)。 变量打印确定。 在本教程中,我们使用了`dotenv`模块从`.env`文件读取环境变量。 您可能也对以下相关教程感兴趣: [Moment.js 教程](/javascript/momentjs/),[从 JavaScript 中的 URL 读取 JSON](/articles/javascriptjsonurl/) , [Node Sass 教程](/javascript/nodesass/), [Lodash 教程](/javascript/lodash/) 或列出[所有 JavaScript 教程](/all/#js)。