go 模块 - “没有版本的替换模块必须是目录路径(根目录或以...开头”)Glitch
在上下文中在 go 模块中,replace 指令允许您用本地路径替换模块。但是,该指令有一个特定的要求:路径必须是根路径(以“/”开头)或相对于模块的根路径。
理解问题
在所提供的场景中,尝试在 go 模块 (goweb) 中使用本地包 (mypack) 会导致错误:“没有版本的替换模块必须是目录路径(以 root 为根或以 . 开头)”此错误表明路径为替换指令指定的格式不符合要求的格式。
解决问题
要解决此问题,请确保替换指令的路径满足以下条件:
解决方案
对于 goweb 模块,由于 mypack 是其根目录的同级目录,因此正确的替换指令是:
<code class="go">replace mypack => ../mypack</code>
此外,为了使此替换有效工作,还必须通过在其目录中添加 go.mod 文件将 mypack 转换为 go 模块。这可以通过在 mypack 目录中运行命令 go mod init mypack 来完成。
其他注意事项
如果应用程序和它使用的包是同一个包的一部分go 模块,无需将其添加到 go.mod 中。只需引用代码中的包就足够了。
资源
以上是为什么 Go Modules 会抛出'没有版本的替换模块必须是目录路径(rooted 或以...开头)”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!