Angular Monorepo:如何解决两个耦合模块之间的循环依赖性httpservice日志使用httpservice记录发送/发送的所有日志 情况我看到的选项但不喜欢

问题描述

常规信息

  • Angular v10.x
  • NRWL 10.x
    • 包含多应用程序和库的Monorepo

情况

我们在存储库中使用了多个模块,以下两个很麻烦:

  • CoreModule 包含API逻辑(HttpRequestService)。能够进行故障转移/重试/选择并存储活动网关URI)
  • LogModule 包含有关日志的所有内容。

我们需要实现的新功能是将收集的日志发送到我们的后端。我们想使用我们的HttpRequestService。

但是由于HttpRequestService写入日志并且LogService需要使用HttpRequestService或至少使用HttpRequestService提供的活动网关,所以出现了循环依赖。

所以我们有了依赖项:

CoreModule  -> LogModule

LogModule   -> CoreModule

我看到的选项(但不喜欢)

  • 将两者都合并到一个模块中(甚至想到它也是错的。)
  • 将活动网关URI作为BehaviorSubject外包给其他(共享)模块。这可能是可行的,但是容易出错,我们最终将有多个源发送HTTP请求,而不是使用具有重试机制的通用服务和所有服务(这会导致冗余)
  • 在HTTP部分周围放置另一层并将其提取到两个模块都可以使用的独立模块中感觉很奇怪。我看不到有一种方法可以抽象出这样一种逻辑,即该逻辑仍像现在一样可读性和可维护性,此外,如果我们需要重新发送日志消息,那么我们将需要诸如尝试次数,哪个网关,等

您是否看到另一种可能性? Lint抛出“ nx-enforce-module-boundaries”。

非常感谢您的创意! :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...