[英]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.