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/"