当前位置: 首页 > 知识库问答 >
问题:

无法使用protobuf包

桓智敏
2023-03-14

看来我无法导入这个包:github。com/golang/protobuf/proto

当我尝试构建或使用go-get时,我得到:无法加载github。com/golang/protobuf/proto:github模块。com/golang/protobuf@latest(v1.3.2)找到,但不包含包github。com/golang/protobuf/proto

这是一个受欢迎的软件包,我很惊讶它似乎不起作用。https://godoc.org/github.com/golang/protobuf/proto#Marshal

有人遇到过这个吗?

更新:

我只是想导入这个:import(“bytes”“context”“encoding/json”“errors”“fmt”“github.com/golang/protobuf/proto”)

GoLang无法在上述路径中解析proto。。。

我尝试这样安装:$去获取github。com/golang/protobuf/proto-go:查找github。com/golang/protobuf/proto最新获取github。com/golang/protobuf/proto:github模块。com/golang/protobuf@upgrade(v1.3.2)找到,但不包含包github。com/golang/protobuf/proto

update2,不确定该文件如何帮助,但在这里:

package main

import (
    "bytes"
    "context"
    "encoding/json"
    "errors"
    "fmt"
    "github.com/golang/protobuf/proto"
    "go_poc/plugins/com_styx_proto"
    "io/ioutil"
    "net/http"
    "time"
)

func init() {
    fmt.Println("styxBotDetect plugin is loaded!")
}

func (r registrable) RegisterHandlers(f func(
    name string,
    handler func(
        context.Context,
        map[string]interface{},
        http.Handler) (http.Handler, error),
)) {
    f(pluginName, r.registerHandlers)
}

func (r registrable) registerHandlers(ctx context.Context, extra map[string]interface{}, handler http.Handler) (http.Handler, error) {
// skipping some lines here

styxRqBytes, err := proto.Marshal(styxRq)
        if err != nil {
            http.Error(w, err.Error(), http.StatusNotAcceptable)
            return
        }

// more code

共有2个答案

谭铭
2023-03-14

在终端窗口中,请运行以下命令,

go clean -modcache

go get -u github.com/golang/protobuf/proto

然后运行以下命令以获取下载的包并在. mod文件中更新

go mod init Version1
go mod tidy
司寇书
2023-03-14

原来模块缓存有问题,这就是为什么go工具无法获取/更新依赖项的原因。

在这种情况下,清除模块缓存(可能)有助于:

go clean -modcache
 类似资料:
  • 问题内容: 我正在通过protobuf协议并使用HTTP Request Sampler测试一个项目。 目标应用服务器也是用Java编写的。 响应错误存在问题: “Could not read Protobuf message: Protocol message contained an invalid tag (zero).; nested exception is com.google.pro

  • 我使用协议缓冲区在c和c#客户机-服务器应用程序之间发送和接收数据。我用protobuf网来解决这个问题。我有两个原始文件,一个请求命令和一个响应命令。我能够将命令从c#客户端发送到c服务器并进行反序列化。但我不能用c#反序列化。 我在缓冲区中以字节为单位获取数据,但它不会在响应命令中反序列化。

  • 嘿,我正在做一个项目,我试图使用ProtoBuf Gradle插件。一开始,我得到这个问题,因为我目前有Gradle2.10安装,所以我遵循这里的说明,以及一个 根据这一点,Gradle文件被移动到了JCenter,但是当我跟踪URL时,我得到了404的响应。我尝试像这个答案一样更改分发URL,然后使缓存无效并重新启动,但这也没有修复它。我沮丧地删除了。gradle文件夹中的东西(试图清除缓存),

  • 我正在使用Ubuntu14.04计算机,试图将google.protobuf模块导入到Python2.7中。 我已经试过了 和 没有成功。 在python内部,我得到一个错误,即: “导入错误:没有名为google.protobuf的模块” 编辑1: 对不起,谢谢大家的评论。我还是Ubuntu和StackOverflow的新手。 具体来说,我输入到命令行 并获得反馈 Traceback(最近的调用

  • 我正在考虑在我的一个项目中使用dart-protobuf来代替JSON。问题是这个库没有提供任何如何使用它的例子,测试也没有真正的帮助。 我对解析文件的工作方式也有点困惑。 所以我想找一个简单的例子来说明如何在dart中使用这个库。

  • 使用protobuf版本2.6.1(我通过自制软件安装) 我想跑 我一直收到这个错误。 我的go路径中安装了protoc gen go。还有其他人有这个问题吗?