猿问

“go:在当前目录中找不到 go.mod 文件”,但它已经存在于目录中

我正在尝试为围绕 GCP 的项目构建 DockerFile。我正在使用 go 版本 1.17,它在 get 命令中失败,说 go.mod 未找到,但它与 Dockerfile 存在于同一目录中。我已经尝试过了go mod init,go mod tidy但我仍然遇到同样的错误。这是我的环境变量和文件:


GO111MODULE="auto"

GOARCH="amd64"

GOBIN=""

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

GOENV="/home/name/.config/go/env"

GOEXE=""

GOEXPERIMENT=""

GOFLAGS=""

GOHOSTARCH="amd64"

GOHOSTOS="linux"

GOINSECURE=""

GOMODCACHE="/home/name/work/pkg/mod"

GONOPROXY=""

GONOSUMDB=""

GOOS="linux"

GOPATH="/home/name/work"

GOPRIVATE=""

GOPROXY="https://proxy.golang.org,direct"

GOROOT="/usr/local/go"

GOSUMDB="sum.golang.org"

GOTMPDIR=""

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

GOVCS=""

GOVERSION="go1.17.1"

GCCGO="gccgo"

AR="ar"

CC="gcc"

CXX="g++"

CGO_ENABLED="1"

GOMOD="/home/name/workspace/professional-services/tools/gcs2bq/go.mod"

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 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3855548593=/tmp/go-build -gno-record-gcc-switches"

我的工作目录中的文件列表:


name@vm-gcs2bq:~/workspace/professional-services/tools/gcs2bq$ ls

Dockerfile  bigquery.schema   datastudio.png           gcs2bq.avsc  go.mod  main.go

README.md   credentials.json  gcs2bq-custom-role.yaml  gcs2bq.yaml  go.sum  run.sh

我在 Dockerfile 中的工作目录设置正确(gcs2bq 之一),当我尝试构建它时,我得到了:


Step 6/16 : RUN go get -v ./...

 ---> Running in ebaa284887cf

go: go.mod file not found in current directory or any parent directory; see 'go help modules'

我还是个新手,主要是 c 和 python,我读到包在这种语言中以不同的方式管理,但我认为我也正确设置了路径。如我错了请纠正我。


任何帮助表示赞赏,如果需要,请询问更多详细信息。


提前致谢 !


PIPIONE
浏览 410回答 1
1回答

偶然的你

好的,我解决了我的问题。首先,我的 WORKDIR 没有指向正确的目录:WORKDIR /go/src/github.com/rosmo/gcs2bq而不是,WORKDIR /work/src/github.com/rosmo/gcs2bq但这只是因为我使用 /work 而不是 /go 来安装已安装的包。然后我在COPY main.go .命令之后添加了以下内容:RUN  go mod init v1 RUN go mod tidy它创建了“丢失的” go.mod 文件并正确安装了所需的依赖项/包。构建的其余部分完全正常。谢谢你的帮助。
随时随地看视频慕课网APP

相关分类

Go
我要回答