📅  最后修改于: 2023-12-03 14:41:32.081000             🧑  作者: Mango
当运行命令bin sh -c go mod download go build -o main
时,会返回一个非零代码:1。这样的情况通常发生在存在$GOPATH
和go.mod
文件,但是不应该使用该命令进行构建时。
通常,go mod download
命令用于将模块的依赖项下载到本地的$GOPATH/pkg/mod
目录中,以供构建使用。然后,使用go build
命令将代码编译成二进制文件。但是,当使用bin sh -c
命令时,该命令会在一个独立的子shell中运行两个命令。因此,go build
命令无法找到在go mod download
命令中生成的依赖项。
为了解决这个问题,我们需要在同一shell中运行两个命令。这可以通过使用一个分号;
来实现,如下所示:
go mod download; go build -o main
这样做的好处是,在同一个shell中运行两个命令,使得go build
命令能够找到在go mod download
命令中生成的依赖项。运行上述命令时,应该可以成功地构建应用程序。
当存在$GOPATH
和go.mod
文件时,我们应该注意使用正确的命令进行构建。在同一个shell中运行go mod download
和go build
命令可以帮助我们避免类似的错误。