[英]Cannot find module providing package
我不确定如何使用“ go mod”解决依赖项问题。 据我所知,它正在获取某个子依赖关系的错误版本,该依赖关系指向不再存在的存储库。
我刚去很新,所以我确定我正在搞砸,我很乐意为您提供一些帮助,以帮助您了解如何解决此问题。 请检查以下示例:
用go get获得我唯一的依赖关系很好
export GOPATH=`mktemp -d`
export MYAPP=`mktemp -d`
cd $MYAPP
cat << EOF > main.go
package main
import (
"fmt"
"os"
"github.com/kubernetes/minikube/pkg/storage"
)
func main() {
if err := storage.StartStorageProvisioner(); err != nil {
fmt.Printf("Error starting provisioner: %v\n", err)
os.Exit(1)
}
}
EOF
go get github.com/kubernetes/minikube/pkg/storage
go build && echo "WORKED" || echo "FAILED"
但是,通过go mod获取它不起作用
export GOPATH=`mktemp -d`
export MYAPP=`mktemp -d`
cd $MYAPP
cat << EOF > main.go
package main
import (
"fmt"
"os"
"github.com/kubernetes/minikube/pkg/storage"
)
func main() {
if err := storage.StartStorageProvisioner(); err != nil {
fmt.Printf("Error starting provisioner: %v\n", err)
os.Exit(1)
}
}
EOF
go mod init github/my/repo
go build && echo "WORKED" || echo "FAILED"
我如何使最后一个工作?
$ go version
go version go1.12 darwin/amd64
根据Go模块Wiki
日常的依赖关系升级和降级应该使用“ go get”完成,它将自动更新go.mod文件。 或者,您可以直接编辑go.mod。
就我所知,go mod init不会获得您的依赖关系,而是会初始化一个新模块并创建一个mod文件来跟踪您模块所使用的依赖关系版本。
因此,去获取您的依赖关系很好。
另一方面,根据Wiki,Go模块将再次提供某些功能:
诸如go build或go test之类的标准命令将根据需要自动添加新的依赖关系,以满足导入要求(更新go.mod并下载新的依赖关系)。
需要时,可以使用诸如go get foo@v1.2.3,go foo @ master,go foo @ e3702bed2之类的命令选择更具体的依赖版本,或者直接编辑go.mod。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.