JBC*_*BCP 4 dependency-injection solid-principles nestjs nestjs-config
NestJS 文档说要像这样提供静态文件:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'client'),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
但作为一名 DI 和 SOLID 从业者,我想让 rootPath 可配置。可以说我有一个ConfigModule或我自己的ConstantsModule。我如何rootPath以类似的方式注入?
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: this.configService.get<string>('staticRootPath'),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
正确答案:
ServeStaticModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => [{
rootPath: join(__dirname, '..', configService.get<string>('STATIC_FOLDER')),
}]
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |