Nestjs 学习系列基础篇7 - 配置环境变量

780 阅读1分钟

Nestjs 学习系列基础篇7 - 配置环境变量

目的

读取环境变量 → 全模块可读取

安装

pnpm i @nestjs/config

配置 env 文件

  1. 在根目录下创建.env文件

  2. 配置

    .env

    APP_ENV=development
    APP_PORT=3000
    # DB MONGODB
    DB_URL=mongodb://localhost:27017
    DB_NAME=nest-server
    DB_USER=xxxx
    DB_PASS=123456
    DB_ENTITY_NAME=mongo
    DB_SYNCHRONIZE=false
    DB_LOGGING=true
    
  3. 封装方法

    src/shared/configs/configuration.ts

    export default (): any => ({
      env: process.env.APP_ENV,
      port: process.env.APP_PORT,
      database: {
        url: process.env.DB_URL,
        name: process.env.DB_NAME,
        user: process.env.DB_USER,
        pass: process.env.DB_PASS,
        synchronize: process.env.DB_SYNCHRONIZE,
        logging: process.env.DB_LOGGING,
      },
    });
    

    src/shared/configs/module-options.ts

    import { ConfigModuleOptions } from '@nestjs/config';
    import configuration from './configuration';
    
    export const configModuleOptions: ConfigModuleOptions = {
      envFilePath: '.env',
      load: [configuration],
    };
    

使用

src/shared/shared.module.ts

import { Module } from '@nestjs/common';
import { SystemService } from './system.service';
import { ConfigModule } from '@nestjs/config';
import { configModuleOptions } from './configs/module-options';

@Module({
  providers: [SystemService],
  // 暴露 config 模块
  exports: [SystemService, ConfigModule, ],
  // 注入 config 模块
  imports: [ConfigModule.forRoot(configModuleOptions), AppLoggerModule],
})
export class SharedModule {}

src/user/user.service.ts

import { ConfigService } from '@nestjs/config';
export class UserController {
  constructor(
    private readonly configService: ConfigService,
  ) {}

  @Post()
  @ApiOperation({
    summary: '新增用户',
  })
  @ApiResponse({
    status: HttpStatus.CREATED,
    type: CreateUserDto,
  })
  @ApiBearerAuth()
  create(@Body() createUserDto: CreateUserDto) {
    // 测试全局配置信息
    console.log('ENV:URL:', this.configService.get<string>('database.url'));
    ...
  }
  ...
}

项目仓库地址

仓库地址Github: dome-server

注意:基础篇的的代码在 base 分支下