Go 模块和替换的难以捉摸
在 Go 模块领域,replace 指令有望替代本地开发的包对于远程代码,您可以在试验或故障排除时使用自己的代码。然而,正如您所经历的那样,替换没有指定版本的包可能是一件令人烦恼的事情。
您遇到的错误消息“没有版本的替换模块必须是目录路径(以 . 开头或以 . 开头)” ,”强调了一个关键要求,即提供给替换指令的路径必须是绝对路径或相对于模块根的路径。
克服路径困惑
出现路径难题从 Go 模块的结构方式来看。 go.mod 文件作为核心,建立模块的标识及其依赖项。与 go.mod 文件位于同一模块中的包可以直接引用,无需替换。但是,在处理模块外部的包时,replace 指令就会发挥作用。
在您的例子中,您的目标是使用名为 mypack 的本地包。为了实现这一点,您在 go.mod 文件中指定了以下替换指令:
replace mypack -> ./src/mypack
不幸的是,该路径既不是绝对路径,也不是相对于模块根的路径。 “./”前缀表示相对于当前工作目录的路径,该路径与模块的根目录不同。
建立 Harmony 路径
到要纠正此问题,请按照以下步骤操作:
replace mypack -> ../mypack
其他注意事项
请记住,replace 指令的目的是用于临时本地覆盖。如果您想进行永久替换,请考虑使用供应商工具或明确将 mypack 供应到您的模块中。
相关资源:
以上是为什么Go模块出现“替换没有版本的模块必须是目录路径”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!