如何分析哪个源文件导致“不允许导入周期”问题?错误信息不够清楚,不能让我解决这个问题:
package command-line-arguments
imports app.exap/i8/internal
imports app.exap/i8/internal/data/retrieves
imports app.exap/i8/internal/integration/datastore
imports app.exap/i8/internal/objects/modules
imports app.exap/i8/internal/data
imports app.exap/i8/internal/integration/datastore: import cycle not allowed
package command-line-arguments
imports app.exap/i8/internal
imports app.exap/i8/internal/data/retrieves
imports app.exap/i8/internal/integration/datastore
imports app.exap/i8/internal/objects/modules
imports app.exap/i8/internal/data
imports app.exap/i8/internal/objects/modules: import cycle not allowed发布于 2021-06-06 07:06:30
这个问题不能归咎于单个源文件,因为导入周期通常涉及来自不同包的多个源文件。
但是,您可以从错误消息中收集有价值的信息:您的项目似乎有两个不同的导入周期(两个周期和三个周期),涉及三个包:

要打破这些循环,您首先需要决定哪些循环的边缘应该被消除。但是,我很难给您提供明确的指导,因为消除的最佳优势在很大程度上取决于项目的上下文。
然而,在Go中避免导入周期的一个很好的经验法则是,高级包不应该依赖于较低级别的包。因此,您很可能不希望app.exap/i8/internal/data依赖于
app.exap/i8/internal/integration/datastore
app.exap/i8/internal/objects/modules.之一的
一旦您决定了要消除的两个边,只需确定导入包的哪个源文件包含违规的导入声明,并找到一种重构代码以便删除它们的方法。
https://stackoverflow.com/questions/67856223
复制相似问题