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

问题描述 投票:0回答:1
$ go版本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模块时,当我在go run main.go中运行my-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 go-modules
1个回答
0
投票

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包含在同一模块中,因此在require文件中不需要go.mod语句即可使用uuid程序包。您可以像导入其他任何软件包一样导入它,它将起作用。

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

请参阅https://blog.golang.org/using-go-modules,了解如何使用Go模块,包括该系列中的second post,有关如何将项目转换为使用模块。

© www.soinside.com 2019 - 2024. All rights reserved.