NESTJS环境配置

本文介绍了如何在NestJS项目中利用@nestjs/config模块进行环境配置,包括创建不同环境(开发、生产)的配置文件,通过环境变量读取相应配置,并创建配置模块以全局应用配置。在apps目录下为各子应用配置环境,同时展示了在服务中如何调用配置参数。
摘要由CSDN通过智能技术生成

实际开发过程中需要对项目环境进行配置,基本环境通常会有测试环境和开发环境。
nest 提供了@nestjs/config包方便我们对环境进行配置
废话不多说,实操步骤如下。
本设置基于文章NESTJS 服务化架构设计和项目搭建中的结构进行设计和实现

安装依赖

npm i --save @nestjs/config

添加配置

为了使配置文件能够进行共享和避免反复配置,将config配置在lib目录下
目录结构如下

├── apps
│   ├── dm
│   ├── ge
│   └── jsf
├── libs
│   └── common
│       ├── src
│       │   ├── config
│       │   │   ├── config.module.ts
│       │   │   └── env
│       │   │       ├── common.ts
│       │   │       ├── development.ts
│       │   │       ├── index.ts
│       │   │       └── production.ts
│       │   └── index.ts
│       └── tsconfig.lib.json

  • common.ts:放置公共配置
  • development.ts:放置开发环境配置
  • production.ts:放置线上环境配置

根据环境变量读取配置

  • libs/common/src/config/env/index.ts
import developmentConfig from './development';
import productionConfig from './production';
import commonConfig from './common';

const configs = {
  development: developmentConfig,
  production: productionConfig,
};
const env = process.env.NODE_ENV || 'development';

export default () => ({
  ...commonConfig,
  ...configs[env],
});

创建配置模块

引入自定义配置,因为是公共模块,设置 isGlobal=true

  • libs/common/src/config/config.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import customConfig from './env';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // 作用于全局
      load: [customConfig], // 加载自定义配置项
    }),
  ],
})
export class configModule {}

调用配置参数

  • apps/ge/src/ge.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class GeService {
  constructor(private configService: ConfigService) {}
  getConfig() {
    this.configService.get<string>('port');
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值