猿问

Go 1.11 忽略了 `vendor` 目录,错误给人的印象是该目录从未被看过

我遇到了 Go 1.11.4 的问题,忽略了vendor我所在项目的目录。

尝试运行各种命令时,我收到以下错误,即使引用的路径清楚地存在于 vendor 目录中。错误消息本身似乎表明该vendor目录甚至没有被查看,至少对于这个应该找不到的项目来说是这样。

到底发生了什么,我该如何解决这个问题?

下面是来自终端的直接复制/粘贴,在一些pbpaste | sed "s#…#R#g;s#…#M#g;s#…#D#g;s#…#B#g;s#…#example.org#g;s#^#printf \t#g" | pbcopy脚本之后匿名存储库。

ubuntu:R {607} go version

go version go1.11.4 linux/amd64

ubuntu:R {608} go build | & head -4

server.go:10:2: cannot find package "example.org/M/B" in any of:

    /usr/local/go/src/example.org/M/B (from $GOROOT)

    /home/ubuntu/go/src/example.org/M/B (from $GOPATH)

R.go:8:2: cannot find package "example.org/M/D" in any of:

ubuntu:R {609} ll vendor/example.org/M/B/

total 28

4 -rw-r--r-- 1 ubuntu ubuntu  156 Jan 10 17:57 .drone.yml

8 -rw-r--r-- 1 ubuntu ubuntu 6207 Jan 10 17:57 Gopkg.lock

4 -rw-r--r-- 1 ubuntu ubuntu  798 Jan 10 17:57 Gopkg.toml

4 -rw-r--r-- 1 ubuntu ubuntu   53 Jan 10 17:57 README.md

8 -rw-r--r-- 1 ubuntu ubuntu 4783 Jan 10 17:57 B.go

ubuntu:R {610} go env

GOARCH="amd64"

GOBIN=""

GOCACHE="/home/ubuntu/.cache/go-build"

GOEXE=""

GOFLAGS=""

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOOS="linux"

GOPATH="/home/ubuntu/go"

GOPROXY=""

GORACE=""

GOROOT="/usr/local/go"

GOTMPDIR=""

GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"

GCCGO="gccgo"

CC="gcc"

CXX="g++"

CGO_ENABLED="1"

GOMOD=""

CGO_CFLAGS="-g -O2"

CGO_CPPFLAGS=""

CGO_CXXFLAGS="-g -O2"

CGO_FFLAGS="-g -O2"

CGO_LDFLAGS="-g -O2"

PKG_CONFIG="pkg-config"

GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build981837178=/tmp/go-build -gno-record-gcc-switches"

ubuntu:R {611} 


幕布斯7119047
浏览 113回答 1
1回答

森栏

仔细研究,如果您正在构建的项目不在目录下vendor,您正在处理的项目的目录似乎会被神奇地忽略,这是一个绝对零意义的要求,特别是对于排除故障的难度这个问题,以及整个概念是多么不直观。src$GOPATHsrc一种选择是在其中一个目录中创建符号链接,$GOPATH返回到签出项目的光盘上的实际空间,并cd通过符号链接编译项目(例如,cd ~/go/src/R; go build,或pushd ~/go/src/R; go build; popd)。另一种选择是借助:git config --global url."git@github.com:".insteadOf "https://example.org/" go get example.org/M/R
随时随地看视频慕课网APP

相关分类

Go
我要回答