[TOC]
# **[dotenv](https://github.com/motdotla/dotenv)**
* [ ] 文档:https://github.com/motdotla/dotenv
### env 环境变量配置敏感信息
### 一、.env的作用
`.env`文件是用来自定义配置的一个简单方法,可以将一些不能在代码中存储的敏感/账号数据从代码中剥离出来,作为环境变量存储在环境中。
*****
### 二、.env的使用方法
.env 文件通常不包含在版本控制内,它可能包含敏感的 API Key 或者 密码。所有需要环境变量定义(不敏感的定义)的项目都需要创建一个.env.example 文件,这个环境变量包含他们自己定义的环境变量或者联合开发包含的环境变量。项目合作开发者可以独立的复制 .env.example并且重命名为.env,并且修改为正确的本地环境配置,存储密码key或者提供他们必要的值。 在这个使用方法中 .env 文件应该添加到.gitignore文件中并且永远不会被项目的合作者签入/签出。这个方法确保里边没有敏感的 API Key 或者 密码在版本控制中出现从而减少了安全风险,并且开发环境中的配置永远不会告知合作开发者。
* [ ] 在根目录下添加.env文件
```
DB_HOST=127.0.0.1
DB_NAME=timeseriesmonitor"
DB_PORT=5432
DB_USER=tsm
DB_UNSECURE=true
```
* [ ] 引入`dotenv`
`npm install dotenv`
```
let dotenv = require('dotenv');
dotenv.config('./env');
console.log(process.env);
```
打印log如下:
```
{
...
DB_HOST: '127.0.0.1',
DB_NAME: 'timeseriesmonitor',
DB_PORT: '5432',
DB_UNSECURE: 'true',
DB_USER: 'tsm',
...
}
```
*****
#### 封装一个DB配置类
![](https://box.kancloud.cn/fb079ccc800da25451ac9f2148027946_238x260.png)
![](https://box.kancloud.cn/360511dcd675bede50673f0ae38f7129_269x180.png)
![](https://box.kancloud.cn/1719c8f9e836ce897ad8e57df74ad38b_613x283.png)
![](https://box.kancloud.cn/7d70997c59e8cd384d84709a5d4c3d94_680x274.png)
* [ ] 代码:
1. 根目录新建一个 .env 文件
```
DB_HOST=127.0.0.1
DB_NAME=zhihu
DB_PORT=27017
DB_USER=drw
DB_PWD=123456
```
2. 配置 config / database.js
```
require('dotenv').config('./env')
const { DB_HOST, DB_NAME, DB_PORT, DB_USER, DB_PWD } = process.env
module.exports = {
host: DB_HOST,
database: DB_NAME,
username: DB_USER,
password: DB_PWD,
port: DB_PORT
}
```
3. 输出配置项 index.js
```
const { host,
database,
username,
password,
port } = require('./database')
module.exports = {
ConnectStr: `mongodb://${username}:${password}@${host}:${port}/${database}`
}
```
- 序言
- ES6模块化
- node基础
- FS模块
- 常用变量
- crypto加密
- 基础
- 安装
- 中间件
- 架构
- 结构分层
- 配置
- 路由
- 安装路由
- 自动加载
- 获取参数
- 路由前缀
- 路由中间件
- 控制器
- 请求
- 请求信息
- 数据库
- mongoDB
- mongoDB原生语句
- mongoDB数据库角色
- mongoose连接数据库
- 自动记录时间戳
- 模型
- mongoose模型
- 定义
- 模型初始化
- 查询
- 新增
- 更新
- 删除
- 隐藏字段
- 模式
- 关联查询
- 复杂模型
- 仿知乎个人资料建模
- 关注与粉丝
- 视图
- 模板
- edge
- 日志
- 错误和调试
- 调试当前文件
- nodemon调试
- 异常处理
- Koa2错误处理
- 验证
- Koa验证器
- async-validator
- installation
- 安全
- 数据加密
- 杂项
- jwt
- koa-jwt
- env环境变量配置
- 上传
- 分页和模糊搜索
- 扩展
- nodemon
- bodyparser
- koaJsonError
- cross-env
- uuid生成唯一ID
- pope字符串模板引擎
- 命令行
- 部署
- 附录
- RESTfulApi
- Http动词
- 状态码
- 调用频率限制
- 按需查询字段
- restful分页