【问题标题】:same vendor code from multiple packages来自多个包的相同供应商代码
【发布时间】:2018-05-19 18:11:56
【问题描述】:

我正在尝试使用 grpc "google.golang.org/grpc" 包。

import (
    "github.com/xxxx/yyyy"
    "google.golang.org/grpc"
)

conn, err := grpc.Dial(address)
pppp.NewXXXXClient(conn) // where pppp is from github.com/xxxx/yyyy

如果github.com/xxxx/yyyy 也提供相同的 grpc 包会怎样? 我收到如下编译错误

cannot use conn (type *"google.golang.org/grpc".ClientConn) as type
*"github.com/xxxx/yyyy/vendor/google.golang.org/grpc".ClientConn

我该如何解决这个问题?

【问题讨论】:

  • 显示触发编译错误的那一行。
  • @zerkms 现在已添加。
  • 您不能从多个路径导入相同的包。将供应商包从您的依赖项移动到顶级供应商目录。
  • 嵌套的 vendoring 是一个真正的痛苦处理,没有解决方案是理想的。您最简单的选择是从 xxxx/yyyy 手动删除 vendored 包。如果因为使用不同版本的 grpc 而失败,请将该版本提供给您自己的项目,并将其从外部项目中删除。
  • @SteveHe:您应该提供该软件包,以便您可以控制它。

标签: go grpc godeps


【解决方案1】:

我认为,您必须提供项目的 每个 依赖项(如有必要 - 也包括 Go std 库),否则您根本不应该使用 vendoring。没有第三个选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多