$GOPATH/go.mod 存在,但不应出现在 AWS Elastic Beanstalk 中

我正在尝试使用 bitbucket 管道和 AWS Elastic Beanstalk 部署基于 gin 框架的 golang 应用程序。我创建了我的包 application.zip,其中包含在 EB 内部署应用程序所需的所有文件,当我通过管道或 AWS 控制台中的手动菜单推送它时,我得到了这些:


17:21:49 make.1 | go: finding github.com/appleboy/gin-jwt v2.5.0+incompatible

  17:21:49 make.1 | go: downloading github.com/appleboy/gin-jwt v2.5.0+incompatible

  17:21:49 make.1 | go: extracting github.com/appleboy/gin-jwt v2.5.0+incompatible

  17:21:50 make.1 | go: finding gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:21:50 make.1 | go: downloading gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:21:50 make.1 | go: extracting gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:21:50 make.1 | + GOOS=linux

  17:21:50 make.1 | + GOARCH=amd64

  17:21:50 make.1 | + go build -o bin/application '-ldflags=-s -w'

  17:21:50 make.1 | go: cannot find main module; see 'go help modules'

  17:21:50 make.1 | exited with code 1

  17:21:50 system | sending SIGTERM to all processes

我发现我忘记了 go.mod 文件,确实添加了它,然后我收到了这些消息,一切都很好:


  17:27:59 make.1 | go: extracting github.com/appleboy/gin-jwt v2.5.0+incompatible

  17:27:59 make.1 | go: downloading gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:27:59 make.1 | go: extracting gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:27:59 make.1 | go: finding gopkg.in/dgrijalva/jwt-go.v3 v3.2.0

  17:27:59 make.1 | + GOOS=linux

  17:27:59 make.1 | + GOARCH=amd64

  17:27:59 make.1 | + go build -o bin/application '-ldflags=-s -w'

  17:27:59 make.1 | go: downloading golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c

  17:28:00 make.1 | go: extracting golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c

  17:28:00 make.1 | go: finding golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c

  17:28:01 make.1 | exited with code 0

  17:28:01 system | sending SIGTERM to all processes


现在我不知道$GOPATH/go.mod 是否存在,但我不应该使用最新的 Go 版本 1.13.4,而 AWS 使用 1.13.2。


弑天下
浏览 112回答 4
4回答

一只萌萌小番薯

当GOPATH设置时go get,会将请求的模块安装到提供的路径GOPATH,但如果您使用.mod文件,它将使用工作目录。你的情况,你已经GOPATH设置并拥有.mod文件。你可以unset像这样使用 GOPATH:unset GOPATH它应该可以解决你的问题。或者,您.mod也可以删除文件。

元芳怎么了

也许这可以帮助你。看起来你有 GOPATH=。并且您正在将模块复制到同一位置。go get 的作用是创建 ./src/golang.org/x/vgo,然后 COPY 创建 ./go.mod,这样看起来 GOPATH 的下载源就位于模块内部。这反过来又使它看起来像是 src/golang.org/x/vgo 是您正在处理的项目的一部分,而 vgo 对其自己(不受支持的)供应商的使用感到非常困惑。

陪伴而非守候

您必须删除 GOPATH 目录位置中的 go.mod 文件

摇曳的蔷薇

我遇到了类似的问题,我所做的是:go env -u GOPATH如果您曾经像这样设置过 GOPATH 变量,它应该可以解决您的问题 go env -w GOPATH=some_path。
打开App,查看更多内容
随时随地看视频慕课网APP