登录
首页 >  Golang >  Go问答

使用google.golang.org/grpc时,出现了来自供应商目录的错误

来源:stackoverflow

时间:2024-02-28 16:15:28 430浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用google.golang.org/grpc时,出现了来自供应商目录的错误》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我在使用供应商目录中的 google.golang.org/grpc 时遇到问题,并收到以下错误

cannot use &metadata.HeaderMD (type *"google.golang.org/grpc/metadata".MD) as type *"project1/vendor/google.golang.org/grpc/metadata".MD in argument to grpc.Header

尽管我使用的是从 gopath 复制的包的必要版本,但我收到错误。但是,当我从供应商中删除 golang.google.org/grpc 文件夹时,我的项目从 gopath 获取依赖项,并且它工作正常,尽管一个 gopath 是我在供应商目录中的副本,并且供应商目录中的所有其他库都工作正常除了grpc。


解决方案


当您创建 project1/vendor/google.golang.org/grpc 时,这意味着对于 project1/... 下的软件包,google.golang.org/gprc/... 的导入将被透明地重新映射到供应商版本。

project1 之外的任何软件包都将继续导入非供应商的 google.golang.org/grpc/... 软件包。虽然供应商的包可能是上游的副本,但 Go 将它们视为独立的包。因此它们包含的类型并不等效。

最有可能发生的情况是,您的非供应依赖项之一导入了 grpc 包并在其公共 API 中使用其类型。当您使用 project1 中的 API 时,您将获得上游类型,该类型无法使用供应商类型分配给变量。

此问题有两种可能的解决方案:

  1. 供应所有利用您已供应的依赖项。

  2. 如果您使用的 Go >= 1.11,请切换到 newer Go module build system。这将让您在升级依赖项时继续控制,而无需使用 project1/vendor/... 树来混淆类型系统.

终于介绍完啦!小伙伴们,这篇关于《使用google.golang.org/grpc时,出现了来自供应商目录的错误》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>