[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配置類




* [ ] 代碼:
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分頁