引用的多个第三方包的间接依赖冲突的问题

2023-09-28 16:02:38 +08:00
 TheF00L

各位大佬写 go 的时候遇没遇到过 引用的多个第三方包的间接依赖冲突的问题 比如说,引用了两个第三方包 A 和 B ,他们都引用了别的包 C ,但版本不同; A 依赖 C v1.0 ; B 依赖 C v2.0 但 C 不向前兼容,go mod tidy 只使用最新的版本。 有没有优雅一点的解决办法,我现在想到的只有修改第三方包了

1221 次点击
所在节点    Go 编程语言
12 条回复
bazingaterry
2023-09-28 16:05:09 +08:00
这种情况下 C 的 package name 应该是 C/v2 ,不遵循的话就没办法了
pannanxu
2023-09-28 16:09:21 +08:00
java 的包管理可以排除某个依赖里的子依赖。看看 go 是否有类似的功能呢?全局排除后再手动添加指定版本的依赖即可。
skiy
2023-09-28 16:13:55 +08:00
应该不会吧?没遇到过这种问题。

replace 看看。
TheF00L
2023-09-28 16:23:08 +08:00
@bazingaterry 可能我例子有点问题,没有那么大的版本变化,就小版本变化,但没有向前兼容
TheF00L
2023-09-28 16:24:05 +08:00
@skiy replace 我的理解是替代,他们引用的还是同一个版本,我想搞成各自引各自的
TheF00L
2023-09-28 16:24:50 +08:00
@pannanxu 我没有查到 go 有这种方式😂
fqy12300
2023-09-28 16:33:05 +08:00
PNPM ?
thet
2023-09-28 16:42:15 +08:00
目前没有好的办法,可以调整 A B 版本,让他们引用相同的 C 版本,或者就是你说的 fork 一个 C 了
crysislinux
2023-09-28 16:47:10 +08:00
现在知道 npm 的难处了吧。这种问题要么避免,就不可能有什么好的解决办法。
Aoang
2023-09-28 21:22:24 +08:00
某些包更恶心,

A v1.0 依赖 B v1.1
B v1.2 依赖 A v1.0
A v1.1 依赖 B v1.2
……


一拉就是一生
lysS
2023-09-29 15:56:38 +08:00
它现在报错是啥?
TheF00L
2023-10-07 09:32:08 +08:00
@lysS 就是简单的某个函数没有,手动修改了之后,还报其他函数调用问题,没完没了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX