G
Q
Q
and
M
E

nest.js中的配置抽离

1. 安装config包

npm install --save @nestjs/config

 
2. 在AppModule中引入:

ConfigModule.forRoot({
  isGlobal: true,
  envFilePath: 'src/.env'
})

需要设置全局模块,指定env文件的位置

 
3. 在对应路径下书写对应的.env配置文件

redis_server_host = localhost
redis_server_port = 3306

 
4. 在需要的地方读取配置,这里用redis.module.ts举例

import { Global, Module } from '@nestjs/common';
import { RedisService } from './redis.service';
import { createClient } from 'redis';
import { ConfigService } from '@nestjs/config';

@Global()
@Module({
  providers: [
    RedisService,
    {
      provide: 'REDIS_CLIENT',
      async useFactory(configService: ConfigService) {
        const client = createClient({
          socket: {
            host: configService.get('redis_server_host'),
            port: configService.get('redis_server_port'),
          },
          database: 1,
        });

        await client.connect();
        return client;
      },
      inject: [ConfigService],
    },
  ],

  exports: [RedisService],
})
export class RedisModule {}

 

这样就实现了配置常量的统一抽取,要注意,我们的.env配置文件是不能直接放在根目录下的,根目录下的配置文件在打包时不会直接复制到dist目录中;
如果非要把.env放在根目录,只能在打包的时候手动加一下赋值逻辑:

"build":"nest build && cp .env dist/"
posted @ 2024-03-27 15:41  sy0313  阅读(30)  评论(0编辑  收藏  举报