Golang 更改导入模块名称失败

标签 go docker skydns

我想带SkyDNSv1恢复生机并用我的 fork 构建它(这里是 Dockerfile )。 SkyDNS 确实是一个非常好的和简单的快速服务发现工具,但它已经很长时间没有更新了。

构建过程中出现错误,由第三方库引起。我不知道为什么会这样:

$ docker build --no-cache -t skydns1 .
Sending build context to Docker daemon 1.566 MB
Sending build context to Docker daemon 
Step 0 : FROM golang:1.4.2
 ---> 3e8cb8e0c765
Step 1 : WORKDIR /go/src
 ---> Running in 3a06cf460ad9
 ---> 1dd14a099164
Removing intermediate container 3a06cf460ad9
Step 2 : RUN go get github.com/codegangsta/cli
 ---> Running in eabcfd6fe621
 ---> c9ea222f2d74
Removing intermediate container eabcfd6fe621
Step 3 : RUN go get github.com/vitalyisaev2/skydns1
 ---> Running in 3264582b2e7a
# github.com/rcrowley/go-metrics/influxdb
github.com/rcrowley/go-metrics/influxdb/influxdb.go:19: undefined: client.ClientConfig
github.com/rcrowley/go-metrics/influxdb/influxdb.go:38: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:44: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:52: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:60: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:70: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:82: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:93: undefined: client.Series
github.com/rcrowley/go-metrics/influxdb/influxdb.go:106: client.WriteSeries undefined (type *client.Client has no field or method WriteSeries)
INFO[0075] The command [/bin/sh -c go get github.com/vitalyisaev2/skydns1] returned a non-zero code: 

但是如果你查看file导致此错误,您会注意到 Golang 对 influxdb/client 感到困惑。 我认为编译器没有将导入的名称 client 替换为 influxClient,因为它应该这样做:

package influxdb

import (
    "fmt"
    influxClient "github.com/influxdb/influxdb/client"
    "github.com/rcrowley/go-metrics"
    "log"
    "time"
) 

可能我只是遗漏了一个明显的错误。任何帮助将不胜感激。

最佳答案

Go 编译器不会替换或重写任何东西,代码只是错误的。 github.com/rcrowley/go-metrics/influxdb 包是用其他一些不再存在的 influxdb 客户端代码编写的。 (看起来已经有几个关于这个的 github 问题)

如果您查看当前的 influxdb/client包中,您会看到根本没有 SeriesClientConfigClient.WriteSeries。您需要删除对 github.com/rcrowley/go-metrics/influxdb 的依赖才能构建您的项目。

关于Golang 更改导入模块名称失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30922834/

相关文章:

linux - 为什么 go app 作为多个进程运行?

javascript - 创建启用和禁用网络摄像头的 GNOME shell 扩展

linux - 如何释放 docker devmapper 和 CentOS7 上的空间?

dns - Kubernetes headless 服务 A Record 循环

kubernetes - 如何防止 kube-dns 将请求转发到 8.8.8.8 :53

go - 如何发送多个命令但单独保存输出

go - 从指数和尾数创建 float

docker - 为了在其他容器中使用它们,我是否需要做更多的事情而不是在docker-compose文件中添加env变量?

docker - 在 Docker 中以自定义用户身份运行 ASP.NET Core 应用程序

dns - kubernetes skydns 无法转发请求