node项目中使用dotenv加载配置文件

 0 0条评论

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里的对象就有智能提示了,是否更加友好了呢?



本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客