Nestjs 学习系列基础篇7 - 配置环境变量
目的
读取环境变量 → 全模块可读取
安装
pnpm i @nestjs/config
配置 env 文件
-
在根目录下创建.env文件
-
配置
.envAPP_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 -
封装方法
src/shared/configs/configuration.tsexport 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.tsimport { 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'));
...
}
...
}
项目仓库地址
注意:基础篇的的代码在 base 分支下