使用go mod edit -replace报错“no required module provides package”求助
go mod edit -replace 替换后编译报错问题排查
操作流程
git clone https://gitlab.com/.../jira.gitcd /tmpgit clone https://github.com/andygrunwald/go-jiracd -cd jirago mod edit -replace github.com/andygrunwald/go-jira=/tmp/go-jiramake
报错内容
[localhost rhjira]$ make
GO111MODULE=on go build gitlab.com/.../jira
main.go:6:2: no required module provides package github.com/andygrunwald/go-jira; to add it:
go get github.com/andygrunwald/go-jira
用户背景:此前用相同方式执行replace无异常,当前go.mod仅包含该replace修改。
问题原因及解决办法
核心原因
replace规则的作用是替换已存在的依赖指向,而非直接添加新依赖。你的go.mod里还没有声明对github.com/andygrunwald/go-jira的依赖,所以Go无法识别这个replace规则对应的模块。修复步骤
- 先执行
go get github.com/andygrunwald/go-jira,让go.mod添加该依赖的声明 - (如果之前的replace规则已经存在,可跳过此步)重新执行
go mod edit -replace github.com/andygrunwald/go-jira=/tmp/go-jira - 执行
go mod tidy清理依赖缓存并同步模块信息 - 最后运行
make即可
- 额外排查项
- 检查
/tmp/go-jira目录下是否存在合法的go.mod文件,若克隆的模块本身没有go.mod,Go无法将其识别为可替换的模块 - 确认replace路径是否拼写正确,比如
/tmp/go-jira是否真实存在 - 查看go.mod中的replace规则格式,正确格式应为
replace github.com/andygrunwald/go-jira => /tmp/go-jira(go mod edit会自动处理符号,但手动修改时需注意)
内容的提问来源于stack exchange,提问作者thetango
相关产品推荐
相关产品推荐

