如何在Nest.js中配置环境变量

  介绍

这篇文章主要介绍了如何在巢。js中配置环境变量,此处给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:

环境变量配置简述

程序在不同的环境下需要不同的环境变量,例如生产环境,测试环境以及开发环境所需要不同的数据库信息:链接地址,链接端口号,登录用户名和密码相关信息。为了解决这个问题需要进行相关操作。

在巢中最佳方案创建一个ConfigModule,该ConfigModule公开一个ConfigService,在ConfigService加载特有环境的.env文件。巢提供了@nestjs/配置开箱即用的依赖包。

配置

npm生态有很多相关的依赖包,比如最简单的:

yarn  add  dotenv-flow   yarn  add  @types/dotenv-flow  - d

安装好了直接在主。ts使用:

import  *, as  dotenv 得到& # 39;dotenv-flow& # 39;/* *   ,*导入,.env 环境   *大敌;https://www.npmjs.com/package/dotenv-flow   ,*/dotenv.config ()

就可以使用对应的环境.env变量了,不过这样使用官方推荐软件包:@nestjs/配置:

yarn  add  @nestjs/配置

在app.module。ts中的forRoot静态方法配置环境变量.env解析:

import  {, Module },得到& # 39;@nestjs/常见# 39;   {},ConfigModule  import 得到& # 39;@nestjs/配置# 39;      @Module ({   ,进口:[ConfigModule.forRoot ())   })   export  class  AppModule  {}

然后在项目根目录下新建.env文件:

DATABASE_USER=DATABASE_PASSWORD=DATABASE_NAME=DATABASE_PORT=DATABASE_HOST=

自定义env路径

如果.env需要细化生产,测试和开发环境可以按照下面进行配置:

ConfigModule.forRoot ({   ,envFilePath: [& # 39; .env.development.local& # 39;,, & # 39; .env.development& # 39;],   })

其中排序越前面则优先级最高,但在启动命令中设置环境变量则是最高,例如:

export  DATABASE_USER=root ,,, nest 开始

自定义配置文件

对于复杂的项目,需要把用到的可配置变量需要收集起来,比如新建src/config/配置。ts:

export  default (),=祝辞,({   ,端口:方法(process.env.PORT, 10), | |, 3000年,   ,数据库:{   主持人:才能,process.env.DATABASE_HOST  | |, & # 39; localhost # 39;   ,,端口:方法(process.env.DATABASE_PORT, 10), | |, 3306   ,}   })

然后在ConfigModule。forRoot加载:

import  configuration 得到& # 39;。/config/配置# 39;      @Module ({   ,进口:[   ConfigModule.forRoot({才能   ,,,负载:【配置】   })才能   ,)   })   export  class  AppModule  {}

读取配置变量

如果需要读取相关的配置变量需要用到ConfigService,需要在用到的* .module。ts文件引入:

@Module ({   ,进口:[ConfigModule],   ,//?   })

如果涉及的很多地方要写,每个模块都要引入很烦的人,可以在上面的app.module。ts

添加一个字段:

import  configuration 得到& # 39;。/config/配置# 39;      @Module ({   ,进口:[   ConfigModule.forRoot({才能   ,,,isGlobal:没错,   ,,,负载:【配置】   })才能   ,)   })   export  class  AppModule  {}

然后在构造函数注入使用:

import  {, ConfigService },得到& # 39;@nestjs/配置# 39;      构造函数(private  configService: configService), {}

获取配置变量例如:

const  dbUser =, this.configService.get (& # 39; DATABASE_USER& # 39;)   const  dbHost =, this.configService.get (& # 39; database.host& # 39;)

序列化

序列化指的是程序在网络响应中返回对象发送之前的过程,将提供的信息要进行转换和清理才能发给客户端:比如查询某个用户,一般来说可以返回当前用户实体信息,但里面的密码信息是不可以发送给客户端的,所以这边要做一些转换。

还好巢提供一个class-transformer相当好用的软件包:

yarn  add  class-transformer

比如在下列的用户实体信息排除密码信息:

import  {, Exclude },得到& # 39;class-transformer& # 39;      export  class  UserEntity  {   id:,数量   ,firstName:字符串;   ,姓:字符串;      ,@Exclude ()   ,密码:字符串;      ,构造函数(部分:Partial

如何在Nest.js中配置环境变量