npm i dotenv
npm i -D @typs/dotenv
先安装,由于我是用ts写的node项目,所以再装一个ts版本。
根目录一下新建一个.env文件,必须是这个后缀啊,再新建一个config.ts文件
.env文件可以将一些常量写入,包括数据库连接啊,tooken啦等等,以下是我的一些配置文件。
# web服务端口
SERVER_PORT=80
# api请求基础路径
BASEURL=http://127.0.0.1:11110
# api请求超时时间
TIMEOUT=2000
# api请求ID
APIID=626*******aca4fd9***6
# api请求KEY
APIKEY=dQZn********r836SYW7
# 请求token的间隔,10分钟
REFUSTTOKENTIME=600000
然后在项目的入口文件,我的是index.ts,顶部引入配置文件,必须再顶部哦,否则会出现一些问题。
// 读取env配置文件,必须放在最顶部
import dotenv from 'dotenv'
dotenv.config()
至此你就可以通过process.env.SERVER_PORT这样的对象,获取配置文件的信息。
当然至此也可以实现了,但是毕竟使用ts,process.env里面的对象是没有智能提示的,总觉得有点不爽。
所以我这里新建config.ts,把.env中的常量在映射到json对象中,代码如下:
export const config: IConfig = {
server: {
port: parseInt(process.env.SERVER_PORT!)
},
http: {
baseurl: process.env.BASEURL!,
timeout: parseInt(process.env.TIMEOUT!),
apiID: process.env.APIID!,
apikey: process.env.APIKEY!,
rerushtokentime: parseInt(process.env.REFUSTTOKENTIME!)
}
}
export interface IConfig {
/**
* web服务配置项
*/
server: {
/**
* web服务运行端口
*/
port: number
},
/**
* 网络请求配置项
*/
http: {
/**
* http请求基础路径
*/
baseurl: string,
/**
* http超时等待时间
*/
timeout: number,
/**
* 请求token的apiid
*/
apiID: string,
/**
* 请求token的apikey
*/
apikey: string,
/**
* 请求token的间隔(毫秒)
*/
rerushtokentime: number
}
}
然后同样在入口文件,import这个config.ts文件,添加到系统全局变量global中
import {config,IConfig} from './config'
declare global {
var CONFIG: IConfig
}
global.CONFIG=config
现在global里的对象就有智能提示了,是否更加友好了呢?