拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何在Nest.js的模块中参考应用程序实体

如何在Nest.js的模块中参考应用程序实体

白鹭 - 2022-02-10 2147 0 0

我正在开发一个使用多个 Nest 存盘库的项目,大约 4 个。每个存盘库都需要实作日志记录以记录诸如

  • 服务器生命周期事件
  • 未捕获的错误
  • HTTP 请求/回应

理想情况下,我想将所有内容打包成一个模块,我可以将其发布到我公司的 NPM 组织,并直接在我的每个项目中使用。这样,在每个项目中设定日志记录所需的代码非常少。

我想登录服务器生命周期事件的其中一件事是服务器的 url。我知道你可以app.getUrl()在引导阶段获得这个,但是像这样在模块的生命周期钩子中访问应用程序实体会很棒。

@Module({})
export class LoggingModule implements NestModule {
  onApplicationBootstrap() {
    console.log(`Server started on ${app.getUrl()}`)
  }
  beforeApplicationShutdown() {
    console.log('shutting down')
  }
  onApplicationShutdown() {
    console.log('successfully shut down')
  }
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggingMiddleware).forRoutes('*')
  }
}

这可能吗?

uj5u.com热心网友回复:

没有办法(可能除了 hacky 之外)在模块中访问应用程序本身。

正如您在此处看到的app.getUrl()使用底层 HTTP 服务器。因此,我您可以使用 provider 检索相同的资料HttpAdapterHost

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *