无法使用protobuf软件包

时间:2019-10-02 11:07:50

标签: go protocol-buffers grpc

看来我无法导入此软件包:github.com/golang/protobuf/proto

当我尝试 build 或使用 go get 时,我得到:无法加载github.com/golang/protobuf/proto:模块github.com/golang/protobuf@找到最新版本(v1.3.2),但其中不包含github.com/golang/protobuf/proto

这是一个受欢迎的程序包,令我惊讶的是它似乎没有用。 https://godoc.org/github.com/golang/protobuf/proto#Marshal

有人遇到过吗?

更新

我只是想导入以下内容: 导入(     “字节”     “上下文”     “编码/ json”     “错误”     “ fmt”     “ github.com/golang/protobuf/proto” )

GoLang无法在上述路径中解析原型...

我尝试这样安装: $去获取github.com/golang/protobuf/proto 前往:找到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 个答案:

答案 0 :(得分:2)

事实证明,模块缓存有问题,这就是go工具无法获取/更新依赖项的原因。

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

go clean -modcache

答案 1 :(得分:0)

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

go clean -modcache

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

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

go mod init Version1
go mod tidy