有志者,事竟成!如果你在学习Golang,那么本文《无法正确执行 Go 模块替换命令》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
问题内容我有以下 go 模块示例的代码结构(macos 上的 go 1.14.2)
预订nexus
- go.mod
- main.go
- server.go
我为server.go添加了以下依赖项
package main
import bn "nurture.gitlab.com/core/contracs/bookingnexus/gen/go"
我在 go.mod 中添加了以下代码
module nurture.gitlab.com/core/bookingnexus
go 1.14
require (
nurture.gitlab.com/core/contracts latest
)
replace nurture.gitlab.com/core/contracts latest => /users/.../core/contracts
由于我现在没有nureau.gitlab.com,所以我使用了replace
指令,但是它仍然尝试从nurture.gitlab.com下载并说无法dail tcp。
如果我运行 go mod tidy
则会生成以下错误
/Users/.../BookingNexus/go.mod:6: unrecognized import path "nurture.gitlab.com/Core/Contracts": https fetch: Get "https://nurture.gitlab.com/Core/Contracts?go-get=1": dial tcp: lookup nurture.gitlab.com: no such host
我期望替换命令应该提供获取路径的替代方法,但是它仍然尝试从不存在的路径下载并且根本不考虑替换指令(我尝试包含和排除,两次都收到相同的消息)
有人可以帮我看看为什么会出现这种情况吗?
解决方案
如果您想针对 contracts
包的本地副本进行构建,则需要注释掉远程路径:
require (
//
// comment this out during local development:
//
// nurture.gitlab.com/Core/Contracts latest
)
replace nurture.gitlab.com/Core/Contracts => /Users/.../Core/Contracts
开发完成并签入远程位置后,注释掉 replace
并恢复远程路径。
golang wiki 中适用于您的案例的一些注意事项:
本篇关于《无法正确执行 Go 模块替换命令》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!