当模块名称以www.example.com开头时,无法导入Go本地模块github.com,否则可以正常工作

siv3szwd  于 2023-02-06  发布在  Go
关注(0)|答案(1)|浏览(117)

我试着在本地为Go模块使用下面的命令。

go mod init mymodule/api

当我尝试在本地导入文件时,比如import "mymodule/api/routes",它可以正常工作,但是,我尝试修改Go语言模块的名称,删除初始的go.mod文件,然后运行这个命令。

go mod init github.com/myrepo/project/api

然后,当我通过import "github.com/myrepo/project/api/routes"将文件导入到我的一个模块中时,它不起作用,它没有尝试在本地导入模块,而是尝试从github.com中获取模块。
确切的错误消息如下所示。

github.com/myrepo/project/api/routes: cannot find module providing package github.com/myrepo/project/api/routes: module github.com/myrepo/project/api/routes: git ls-remote -q origin in C:\Users\R\go\pkg\mod\cache\vcs\8c9cab82d2eef4d5003b0ef7010fbbba91353c1368fe1a69d6c6a8fbfa8c8eb5: exit status 128:
        remote: Repository not found.
        fatal: repository 'github.com/myrepo/project/api' not found

有人能告诉我如何重命名Go语言模块,使其以www.example.com开头github.com并且仍然在本地加载模块吗?或者这是预期的行为吗?

byqmnocz

byqmnocz1#

开发状态:

当你想同时开发或调试这两个软件包时,请参阅Golang文档:
replace指令将模块的特定版本或所有版本的内容替换为其他位置的内容。可以使用其他模块路径和版本或平台特定的文件路径指定替换。
因此,您可以使用replace命令来实现此目的,方法是将确切的软件包地址替换为您的本地软件包地址:

replace (
    github.com/myrepo/project/api => ../myLocalRepo/Project/Api
)

有关replace的更多信息,请阅读此文档:https://go.dev/ref/mod#go-mod-file-replace

生产状态:

但如果你想在生产中使用它,这取决于你的软件包,如果你的软件包在GitHub上是私有的:最具体的选项是设置GOPRIVATE来匹配你的模块的路径.像这样:

GOPRIVATE=github.com/your_github_username/project/apit

相关问题