go modules - 替换不起作用 - 没有版本的替换模块必须是目录路径(根目录或以

标签 go go-modules

我只想使用 go modules 的本地包。

我在文件夹 goweb 中有这些文件:

enter image description here

和 go.mod

模块 goweb

go 1.12

require mypack v0.0.0

replace mypack => ./src/mypack

但是 go.mod 提示:

replacement module without version must be directory path (rooted or starting with .

go get -u ./...

go: parsing src/mypack/go.mod: open <local path>/goweb/src/mypack/go.mod: no such file or directory
go: error loading module requirements

所以我在这里遗漏了一些路径结构

最佳答案

如果你的应用和它使用的包是同一个go模块的一部分,你不必将它添加到go.mod,你可以直接引用它。

如果它们不是同一个 go 模块的一部分,那么您可以按照以下步骤操作:

您为 replace 指令指定的路径必须是绝对路径或相对路径,相对于模块的根目录

所以如果 mypack 是你模块根的同级,你可以使用这个:

replace mypack => ../mypack

此外,为了使其工作,您还必须将 mypack“转换”为 go 模块(mypack 必须包含 go.mod 文件)。在其文件夹中运行 go mod init mypack

另请查看相关问题:How to use a module that is outside of "GOPATH" in another module?

关于go modules - 替换不起作用 - 没有版本的替换模块必须是目录路径(根目录或以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533971/

相关文章:

go - 找不到提供包的模块

go - RabbitMQ 发布/订阅实现不工作

GO:作为 Fprintf 参数传递的表单值类型不正确

go - 如何从处理程序内部按名称调用路由?

go - 为什么我的测试无法识别我的 Golang 包函数?

go - 如何在 golang 中初始化指向指针的指针?

Go worker 应用程序未在 Cloud Foundry 中启动

go - 仅从内部代理下载私有(private)模块并从外部代理获取公共(public)模块

go - 弃用和收回之间的区别?