问题描述
我的应用实例取决于配置:serviceName
在这种情况下
const serviceName = 'authentication-service'
const servicePrefix = `api/${serviceName}`;
const swaggerPrefix = 'swagger';
...
const app = await nestFactory.create<nestFastifyApplication>(
AppModule,new FastifyAdapter({
requestIdLogLabel: serviceName,logger: true,...
}),{
// logger: ['log']
logger: process.env.DEV === '1' ? ['log','debug','error','verbose','warn'] : ['error','warn'],});
NestJs documentation 使用应用实例获取 configService
单例:
const configService = app.get(ConfigService);
const port = configService.get('PORT');
有没有办法在实例化我的应用之前获取 configService
实例?
解决方法
没有。如果确实需要,您可以自己调用 dotenv
的 config()
方法并填充 process.env
,但仅此而已。从技术上讲,如果您真的想要,您可以创建一个 NestFactory.createApplicationContext()
调用并从那里获取 ConfigService
,关闭上下文并使用标准 NestFactory.create
启动应用程序,但这最终会DI 分辨率两次,这将是一个非常缓慢的启动