如何分析哪个源文件导致“不允许导入周期”问题?错误消息不够清晰,无法让我解决问题: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 allowedpackage 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
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
这个问题不能归咎于单个源文件,仅仅是因为导入周期通常涉及来自不同包的多个源文件。
但是,您可以从错误消息中收集有价值的信息:您的项目似乎遭受了两个不同的导入周期(2周期和3周期)的影响,涉及三个包:
要打破这些循环,首先需要确定应消除循环的哪些边。但是,我很难就此为您提供明确的指导,因为要消除的最佳边缘高度依赖于项目的上下文。
但是,避免 Go 中导入周期的一个很好的经验法则是,高级包不应依赖于较低级别的包。因此,您很可能不想依赖app.exap/i8/internal/data
也
app.exap/i8/internal/integration/datastore
或。
app.exap/i8/internal/objects/modules
一旦你决定了要消除哪两个边缘,只需确定导入包的哪些源文件包含违规的导入声明,并找到一种方法来重构代码以删除它们。
- 1 回答
- 0 关注
- 47 浏览
添加回答
举报
0/150
提交
取消