格式不正确的模块路径“;xxxx/xxxx/uuid“;从基于GOPATH的dep迁移到go mod时,第一个path元素中缺少点
格式不正确的模块路径“;xxxx/xxxx/uuid“;从基于GOPATH的dep迁移到go mod时,第一个path元素中缺少点,go,go-modules,Go,Go Modules,my auth server使用my api server/my utils/uuid作为依赖项 现在,当我使用基于GOPATH的模块系统时,它工作得很好。但是当使用go模块时,当我在my auth server中运行go run main.go时,它返回错误: GOPATH +---src +--- my-api-server +--- my-auth-server +--- main.go +--- my
my auth server
使用my api server/my utils/uuid
作为依赖项
现在,当我使用基于GOPATH的模块系统时,它工作得很好。但是当使用go模块时,当我在my auth server
中运行go run main.go
时,它返回错误:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
你知道如何解决这个问题吗?这个
go.mod
文件应该位于项目的根目录下(在这种情况下,myapi服务器/go.mod
)
模块路径的第一部分应该是域/路径。例如,完整路径可能是github.com/your github username/my api 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
由于main.go
和uuid
包含在同一个模块中,因此在go.mod
文件中不需要require
语句即可使用uuid
包。您可以像导入任何其他包一样导入它,它将正常工作
我建议使用go-build
并运行生成的可执行文件,而不是使用go-run
,以确保在构建过程中包含所需的所有文件
有关如何使用Go模块的演练,请参阅,包括该系列中有关如何将项目转换为使用模块的内容。检查main.Go文件中的导入路径 我必须调用整个导入路径:
import "github.com/your-github-username/my-api-server/my-utils/uuid"
而不是:
github.com/[username]/[project-name]/views
让它在我这边工作。因为GO找不到模块 不要将您的项目放在GOPATH中。。。这太令人困惑了 相反 在.bashrc中设置:export GO111MODULE=on 关闭所有命令行终端,然后重新打开终端 转到项目根文件夹 $go mod init项目\模块\名称 这将生成go.mod文件 使用所需的版本安装软件包:
go-get-v github.com/golang/protobuf@v1.3.4
然后运行$go运行main.go
现在go.mod文件应该记录Golang将用于运行和构建的包版本
通过检查go.mod文件,确保您使用的软件包版本正确!它应该是这样的:github.com/golang/protobuf v1.3.4如果您试图使用全局包(非标准),那么包名的第一部分应该有一个点('.')。可能像在任何URL中一样需要点('.'),在本例中是github.com…,它将其标记为远程包 如果您想使用本地包,那么您需要使用go模块,那么第一部分将是您go模块的名称(您在go模块初始化期间使用的名称) 示例(根据问题): 转到项目根文件夹(在本例中为
。/src$
)&运行以下命令
[project-name]/views
这将创建一个go.mod和go.sum文件
然后要导入uuid,只需在导入中使用myapiserver/my-utils/uuid
go mod init myapiserver
然后,
uuid.go
中的所有公共函数(以大写字母开头)都可以在当前文件中访问请参见以下答案:不要将项目放在GOPATH中。。。这太让人困惑了
-这是一个惯例,我特别喜欢。另外,错误是第一个路径元素中缺少点
而不是无法解析模块
Ayush Gupta,该错误是由不正确的模块使用导致的。错误的软件包版本具有不正确的文件路径=>导致Golang无法找到要运行或生成的正确文件
go mod init myapiserver
import "myapiserver/my-utils/uuid"