我想能够读懂介观协议信息包.我用buf.buid来生成SDK.然后我将它们导入到我的mqtt.go文件中:

package main

import (
"encoding/json"
"fmt"
"io"
"log"
"os"
"os/signal"
"strings"
"sync"
"syscall"

mqttProto "buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go"
mqtt "github.com/eclipse/paho.mqtt.golang"
"google.golang.org/protobuf/proto"
)

但是,当我try 使用Go Run mqtt.go运行时,我收到以下错误:

no required module provides package buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go; to add it: go get buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go

当我try 使用go get buf.build/.我得到一个空的输出,问题仍然存在.

我还try 运行Go mod tidy,但收到以下错误:

go: finding module for package buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go
go: router imports buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go: module buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go@latest found (v1.32.0-20240228025038-216ffc09a4e9.1), but does not contain package buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go

我也try 了do run go lean-modcache,但没有任何帮助.你有什么办法解决这个问题吗?谢谢

推荐答案

你可以通过go get查询go模块,然后在模块缓存中判断它的内容,来查看go模块实际包含的内容.模块缓存位于$GOPATH/pkg/mod(在mac上默认为~/go/pkg/mod).从那里,您应该能够按照导入路径的文件夹导航到模块.

在本例中,模块本身中没有GO文件,只有go.mod文件和LICENSE文件.所有围棋文件都在子文件夹meshtastic中.

这意味着导入路径应为:

import mqttProto "buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go/meshtastic"

做出这样的改变应该会解决这个问题.

Go相关问答推荐

gorm插入不支持的数据

由于索引器压缩比限制,扫描包含golang包的图像时,伪影XRAY失败

Golang测试容器,无法使网络正常工作

MaybeReadByte对通道的使用如何在Go中提供随机行为?

Go 1.20 中如何计算连接错误?

日志(log)文件不在 golang 的日志(log)目录中

Golang:访问any类型泛型上的字段

如何获取集群外go Kubernetes客户端的当前命名空间?

优化方式中所有可能组合的字符串相似度

如何将验证器标记添加到嵌套字段

Opensearch 错误 ping 弹性服务器:由未知权威签署的 x509 证书

golang中如何声明多个接口约束?

如何将一片 map 转换为一片具有不同属性的 struct

如何使用带有方法的字符串枚举作为通用参数?

无法使用 Golang 扫描文件路径

io.Pipe 使用困难

如何在Golang中的差异函数中杀死命令Exec

Golang ACMEv2 HTTP-01 挑战不挑战服务器

gorm 获取列名

跟踪长时间运行的任务的进度 - 正确的方法