猿问

找到并更换 Go 模块,但不是必需的

当我尝试构建我的go代码时,我遇到了一个奇怪的错误。


$ make install

go version go1.16 windows/amd64

bin/check_go_version 1.14.4

plugin/loader/preload.sh > plugin/loader/preload.go

go fmt plugin/loader/preload.go >/dev/null

go install "-asmflags=all='-trimpath=C:\Users\Deepak Dash\go\src'" "-gcflags=all='-trimpath=C:\Users\Deepak Dash\go\src'" -ldflags="-X "github.com/ipfs/go-ipfs".CurrentCommit=8f9a2b7-dirty" ./cmd/ipfs

cmd\ipfs\daemon.go:32:2: module github.com/ipfs/go-saas-endpoint provides package github.com/ipfs/go-saas-endpoint and is replaced but not required; to add it:

        go get github.com/ipfs/go-saas-endpoint

make: *** [cmd/ipfs/Rules.mk:37: cmd/ipfs-install] Error 1


我以前使用过go.mods。我已将 GitHub 包替换为本地模块。它正在检测本地包。


谢谢,迪帕克·达什


肥皂起泡泡
浏览 178回答 1
1回答

神不在的星期二

这是一个 Go 1.16 问题,目前正在 golang/go 问题 44529 中进行调查它包括Jay Conrod的评论:go mod tidy并且都可能通过网络查找任何所需模块未提供的导入包。如果在本地替换模块,go命令将首先查找该命令,但我认为它可能仍然会转到网络以获取模块路径的其他前缀。go get相反,您可以在替换不存在的版本时添加对该版本的要求:go mod edit -require example.com/mod@v0.0.0-local -replace example.com/mod@v0.0.0-local=../local添加替换模块(即使是左侧没有版本的替换模块)也不会自动将该模块添加到构建列表中。如果是这样,该命令将读取其文件并应用其要求。这可能会影响其他模块的选定版本,即使被替换的模块没有提供任何软件包。gogo.mod谷歌的Bryan C. Mills补充说:go mod tidy如果可以添加替换的模块,则永远不要进行网络查找。(请参阅 import.go#queryImp())go get另一方面,将执行网络查找以识别真正的最新版本,并考虑您的替换(query.go#Versions()),然后该版本将被替换而不是下载。它这样做,以便 go get 添加的最新版本始终与 一致,并且(如果可能)您的 require 指令始终为下游使用者(如果有)指定有效版本,以便它们在需要您的模块时不会中断。(下游消费者不会选择您的替换指令,因此他们需要一个有效的版本。go list -m [⋯]@latest如果未对相关存储库使用代理,则该查找可能涉及克隆上游存储库。因此,这可能是一个非常昂贵的操作。(请注意,go 命令的官方发行版默认使用,但命令的 Fedora 分支不使用。proxy.golang.orggo如果该网络查找失败,则还将回退到替换版本(query.go#Latest()go get)
随时随地看视频慕课网APP

相关分类

Go
我要回答