V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
TheF00L
V2EX  ›  Go 编程语言

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

  •  
  •   TheF00L ·
    caodonghui123 · 212 天前 · 943 次点击
    这是一个创建于 212 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2023-10-07 09:32:08 +08:00
    bazingaterry
        1
    bazingaterry  
       212 天前
    这种情况下 C 的 package name 应该是 C/v2 ,不遵循的话就没办法了
    pannanxu
        2
    pannanxu  
       212 天前
    java 的包管理可以排除某个依赖里的子依赖。看看 go 是否有类似的功能呢?全局排除后再手动添加指定版本的依赖即可。
    skiy
        3
    skiy  
       212 天前
    应该不会吧?没遇到过这种问题。

    replace 看看。
    TheF00L
        4
    TheF00L  
    OP
       212 天前
    @bazingaterry 可能我例子有点问题,没有那么大的版本变化,就小版本变化,但没有向前兼容
    TheF00L
        5
    TheF00L  
    OP
       212 天前
    @skiy replace 我的理解是替代,他们引用的还是同一个版本,我想搞成各自引各自的
    TheF00L
        6
    TheF00L  
    OP
       212 天前
    @pannanxu 我没有查到 go 有这种方式😂
    fqy12300
        7
    fqy12300  
       212 天前
    PNPM ?
    thet
        8
    thet  
       212 天前
    目前没有好的办法,可以调整 A B 版本,让他们引用相同的 C 版本,或者就是你说的 fork 一个 C 了
    crysislinux
        9
    crysislinux  
       212 天前 via Android
    现在知道 npm 的难处了吧。这种问题要么避免,就不可能有什么好的解决办法。
    Aoang
        10
    Aoang  
       211 天前
    某些包更恶心,

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


    一拉就是一生
    lysS
        11
    lysS  
       211 天前
    它现在报错是啥?
    TheF00L
        12
    TheF00L  
    OP
       203 天前
    @lysS 就是简单的某个函数没有,手动修改了之后,还报其他函数调用问题,没完没了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2695 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 10:58 · PVG 18:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.