问题标签 [cyclic-dependency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1001 浏览

angular - Angular 提供程序,循环依赖错误

我收到此错误:
提供程序解析错误:无法实例化循环依赖!

我有一个组件可以对我的后端进行 http 调用:
backend.component.ts

我每次通话都使用拦截器。
token.interceptor.ts

如果我收到错误,我会在我的自定义错误处理程序中处理它,因为我想将错误发送到我的后端。
自定义错误处理程序.ts

因此我使用服务。
errorLog.service.ts

这就是问题所在,因为我也使用 httpClient。但是我怎样才能避免这种失败,如何做对呢?现在我使用'Http'而不是'HttpClient'。

更新 1

更新 2

将 AuthService 和 Router 注入 body 可以解决问题:

0 投票
0 回答
830 浏览

node.js - 使用 Express 服务器和 Websocket 服务器;如何在 POST 到我的一条路由后触发 Websocket 发送事件?

我目前正在制作一个在 Typescript 中使用 Express 和 Websockets 的后端服务器。从高层次来看,我的问题是我想这样做,以便当我收到一条发送到我的一条路由的 POST 时,该路由的处理程序会向客户端 websocket 发送一条消息。我目前有三个文件:app.tsconversationController.tsserver.ts.

我构建它的方式是conversationController.ts为我的路由处理 http 和 websocket 逻辑,app.ts使用该控制器并导出我的 express 应用程序,并server.ts创建 HTTP 服务器和 Websocket 服务器。这是我的代码,因此您可以了解正在发生的事情以及我正在尝试做的事情。我相信你会看到,我做事的方式有点古怪。我很想获得有关如何更好地构建事物/最佳实践的反馈,但无论哪种方式,我的代码现在都可以工作。底部有更多解释。

这是来自的重要内容conversationController.ts

这是来自的重要内容app.ts

最后,这里server.ts

现在,让我非常清楚。这段代码确实有效。我可以连接到前端的 WebSocket 服务器;我收到消息说我已连接,我可以通过套接字来回发送消息。但是,我的问题是我想以某种方式使打开的套接字连接(在 socketLogic() 方法中;称为“ws”的套接字)可handleMessageFromAndroid用于conversationController.ts.

起初,我想将 WebSocket 服务器(在 中创建的服务器server.ts)导入conversationController.ts并使其成为实例变量,以便整个班级都可以使用该服务器,这将解决我的所有问题,但这导致了我了解循环依赖。基本上,当我尝试这样做时,来自的 WebSocket服务器server.tsundefined因为.conversationController.ts server.ts

我不确定如何解决这个问题,或者是否可以完成。但是我肯定会很感激一些帮助,因为我几天来一直在努力解决这个问题,并且检查了许多 SO 问题并在 Google 上搜索了很多。谢谢。

0 投票
1 回答
325 浏览

python - 在 Airflow 1.9.0 中填充“ExternalTask​​Sensor”的“dag_id”的最佳实践是什么?

你如何填写ExternalTaskSensor参数external_dag_id

  1. 硬编码。维护 DAG 非常简单,但很难维护,如果外部 DAG 的 dag_id 发生变化,您必须记住也要更改external_dag_id。甚至一些不知情的拼写错误。
  2. 或导入该 dag 并使用external_dag.dag_id. 这样就解决了上面的问题。但它可能会出现循环依赖和一些全局变量问题。这些问题比 Hardcode 解决方案更无意识。

有人在生产中对此有一些最佳实践吗?欢迎任何建议。

0 投票
0 回答
549 浏览

angular - Angular 4 循环依赖与使用路由器的启动服务

在我的 Angular 4 应用程序中使用依赖于“路由器”的启动服务时出现循环依赖错误。

我得到的错误如下:

无法实例化循环依赖!ApplicationRef ("[ERROR ->]"): 在 NgModule AppModule 中的 ./AppModule@-1:-1

我创建了一个非常简单的 plunker 来演示这个问题。可以在这里找到:https ://plnkr.co/edit/fv6DmZ14JmdUDsgO4H53

背景: 我正在尝试运行一些需要在我的 Angular 4 应用程序中使用路由器的启动代码。但是,只要我在启动服务的构造函数中添加路由器依赖项,就会出现上述循环依赖项错误。

有问题的行是在构造函数第 7 行的 src/AppStartupService.ts 文件中包含对路由器的构造函数依赖项:

如果我删除这个构造函数依赖,一切正常。

我没有看到循环依赖依赖于哪里。

有任何想法吗?谢谢

0 投票
0 回答
1319 浏览

angular2-routing - Angular 5 APP_INITIALIZER 给出循环依赖错误

角 5 错误。我无法从浏览器获取有关页面刷新的用户详细信息。我正在尝试使用 APP_INITIALIZER 加载数据但低于错误 -

compiler.js:19390 未捕获错误:提供程序解析错误:无法实例化循环依赖!ApplicationRef ("[ERROR ->]"): 在 NgModule AppModule 中的 ./AppModule@-1:-1

下面是我的配置 app.module.ts

用户服务

或者在呈现视图之前我可以解决登录用户的任何其他建议!因为用户没有被解析,所以 auth guard 在页面刷新时将其重定向到登录页面。任何帮助表示赞赏!提前致谢

0 投票
0 回答
1838 浏览

angular - 循环依赖。HttpInterceptor 和 TranslateService

这被讨论了很多,但我找不到如何解决我的问题。

原因很清楚,我试图在我的拦截器中使用 translateService,但两者都依赖于 httpClient。

我只发生在我的拦截器构造函数是:

如果我删除 translate 它不会因为循环依赖而失败。

所以,我想我需要以某种不同的方式访问翻译,但我找不到它。

我该怎么做?

我尝试了链接建议,终于明白了。

}

0 投票
1 回答
2263 浏览

react-native - 如何在本机反应中检测循环依赖导入?

是否有任何包或解决方案来检测本机反应中的循环依赖导入?

[或者]

运行应用程序时,我可以获得循环导入的堆栈跟踪吗?

目前,循环依赖导入正在返回未定义的值,而没有说出确切的问题。

谢谢!

0 投票
2 回答
1698 浏览

angular - Angular 5 APP_INITIALIZER 导致循环依赖

类似于Angular 5 APP_INITIALIZER 给出循环依赖错误

我有一个使用 Angular 5 和 SSR 的应用程序,我刚刚从 Angular 4 升级了它,一切都很好。

现在,当我使用 APP_INITIALIZER 时,出现上述错误。我环顾四周,我能找到的最好的与需要注入路由器有关,但我不使用路由器!任何关于这方面的指导都会很棒,在此先感谢!

这是代码:

在我的提供者和功能中:-

服务:

编辑:好的,我可能是错的,但看起来可能与 HttpClient 有关。我删除它,它似乎工作......有点大声笑我可以收到一条消息到控制台。不过我需要http!我尝试添加超时并注入它,但这没有用。

0 投票
1 回答
70 浏览

c++ - 具有模板特化的复合结构中的循环依赖

有谁知道将模板专业化与复合结构中使用的自定义类一起使用的方法?

具体来说,我正在编写一个程序来解析/验证 XML 文档,其中 XML 数据存储在自定义复合树结构中,该结构使用我的class XMLNode数据结构构建,如下所示。

每个 XMLNode 对象都在其std::unordered_set<XMLNode> children成员中存储子节点,我想使用std::hash结构的模板专门化,以便可以使用 XMLNode 对象的专用散列函数插入新节点。这是我到目前为止所拥有的:

然而,编译器对此存在问题,因为XMLNode该类依赖于std::hash<XMLNode(因为std::unordered_set<XMLNode> children)并且std::hash<XMLNode需要class XMLNode首先定义。

具体来说,使用 VS 15.4.4 编译时出现以下错误:E1449 explicit specialization of class "std::hash<XMLNode>" must precede its first use (at line 575 of "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\type_traits")

但是,将定义放在std::hash<XMLNode>定义之前XMLNode并转发声明XMLNode类也不能提供解决方案。

有没有人有这个问题的设计解决方案?或者这在 C++ 中是不可行的?谢谢。

0 投票
1 回答
63 浏览

c++ - 可变类模板的循环模板依赖

我正在尝试构建一个“非集中式”图形结构,其中节点和边相互交叉。与此非常相似:循环模板参考结构

虽然,我试图支持节点可以容纳几种不同“arity”的边缘类型。而且,反过来,边缘的许多节点类型。

¿ 有没有办法通过通用编程/元编程来实现这一点,而不需要继承?

我尝试的以下方法突出了这个问题: