如何查明“不允许导入周期”问题?

如何分析哪个源文件导致“不允许导入周期”问题?错误消息不够清晰,无法让我解决问题:


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


慕勒3428872
浏览 48回答 1
1回答

30秒到达战场

这个问题不能归咎于单个源文件,仅仅是因为导入周期通常涉及来自不同包的多个源文件。但是,您可以从错误消息中收集有价值的信息:您的项目似乎遭受了两个不同的导入周期(2周期和3周期)的影响,涉及三个包:要打破这些循环,首先需要确定应消除循环的哪些边。但是,我很难就此为您提供明确的指导,因为要消除的最佳边缘高度依赖于项目的上下文。但是,避免 Go 中导入周期的一个很好的经验法则是,高级包不应依赖于较低级别的包。因此,您很可能不想依赖app.exap/i8/internal/data也app.exap/i8/internal/integration/datastore或。app.exap/i8/internal/objects/modules一旦你决定了要消除哪两个边缘,只需确定导入包的哪些源文件包含违规的导入声明,并找到一种方法来重构代码以删除它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go