登录
首页 >  Golang >  Go问答

从基于 GOPATH 的 dep 迁移到 go mod 时,格式错误的模块路径“xxxx/xxxx/uuid”在第一个路径元素中缺少点

来源:Golang技术栈

时间:2023-05-01 09:01:28 408浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《从基于 GOPATH 的 dep 迁移到 go mod 时,格式错误的模块路径“xxxx/xxxx/uuid”在第一个路径元素中缺少点》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

$去版本
1.13.3

我的文件夹结构如下:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-server用作my-api-server/my-utils/uuid依赖

现在,当我使用基于 GOPATH 的模块系统时,效果很好。但是当使用 go modules 时,当我运行它go run main.gomy- auth-server返回错误:

build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element

知道如何解决这个问题吗?

正确答案

go.mod文件应位于项目的根目录(在本例中为my-api-server/go.mod)。

模块路径的第一部分应该是域/路径。例如,完整路径可能是github.com/your-github-username/my-api-server. 您看到的错误是因为第一部分不是域(带句点)。您不必发布模块来开发它,但您需要使用正确的域名。

一旦有了模块路径,就可以使用完整的模块路径+“/”+包的相对路径来导入该模块中包含的包。例如,

import "github.com/your-github-username/my-api-server/my-utils/uuid"

由于main.gouuid包含在同一个模块中,因此您不需要requirego.mod文件中声明即可使用该uuid包。您可以像任何其他包一样导入它,它会起作用。

我建议使用go build并运行生成的可执行文件,而不是使用go run它来确保在构建过程中包含所有需要的文件。

有关如何使用 Go 模块的演练,请参阅https://blog.golang.org/using-go- modules ,包括该系列中关于如何将项目转换为使用模块的[第二篇文章。](https://blog.golang.org/migrating-to-go- modules)

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表