You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang解决opentelemetry-proto无对应Go包的路径替换及编译报错问题

问题根因

github.com/open-telemetry/opentelemetry-proto 官方仓库仅维护protobuf定义文件,不会预提交生成后的Go代码,所以直接通过go mod拉取的官方依赖包中不存在gen/go/相关路径,因此编译时会提示包找不到。

解决方案

方案1:本地生成代码+go mod重定向(推荐,适配Go mod模式)

  • 本地克隆opentelemetry-proto仓库后,在仓库根目录执行make gen-go生成Go代码,生成后的代码会默认存放在仓库根目录的gen/go路径下
  • 在你的业务项目go.mod文件末尾添加重定向规则,将官方模块路径指向你本地生成完代码的仓库目录:
replace github.com/open-telemetry/opentelemetry-proto => /本地opentelemetry-proto仓库的绝对路径
  • import直接使用官方路径即可:
import "github.com/open-telemetry/opentelemetry-proto/gen/go/common/v1"

执行go build时会直接读取本地目录下的生成代码,不会拉取官方仓库的内容。

方案2:使用已存放到GOPATH的生成代码

你已经将生成的代码复制到$GOPATH/src/opentelemetry-proto/gen/go路径,可根据你使用的依赖模式调整:

  • 若使用GOPATH模式(GO111MODULE=off),import直接写相对于GOPATH/src的路径即可:
import "opentelemetry-proto/gen/go/common/v1"
  • 若使用Go mod模式,仍需在go.mod中添加重定向规则:
replace opentelemetry-proto => /你的GOPATH完整路径/src/opentelemetry-proto

import规则和上面GOPATH模式保持一致即可。

注意:如果生成的代码头部package声明和导入路径不匹配,需检查你的protoc-gen-go版本是否和opentelemetry-proto仓库要求的版本一致,版本不兼容会导致生成的代码路径、包声明异常。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:15:05