Golang下载大写项目名称的Go模块时遇到问题

Golang下载大写项目名称的Go模块时遇到问题 目前我正在尝试下载一个项目名以大写字母开头的仓库。 go get dev.azure.com///_git/.git

因此,我遵循了此处提到的解决方案:https://godoc.org/golang.org/x/mod/module,

所以,在我的 go.mod 文件中,我替换了项目名:

go 1.14

require (
	dev.azure.com/myorganization/!myproject/_git/reponame.git v0.0.8 // indirect
....
)

我遇到了以下错误:

go: dev.azure.com/myorganization/!myproject/_git/reponame.git@v0.0.8: unrecognized import path "dev.azure.com/myorganization/!myproject/_git/dialog-core.git": reading https://dev.azure.com/myorganization/%21myproject/_git/reponame.git?go-get=1: 203 Non-Authoritative Information

我是否遗漏了什么?


更多关于Golang下载大写项目名称的Go模块时遇到问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

谢谢 @rot13。 问题有所不同,与使用访问令牌访问私有仓库有关。

更多关于Golang下载大写项目名称的Go模块时遇到问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go模块中处理包含大写字母或特殊字符的路径时,需要正确使用replace指令和go.mod文件中的转义。Azure DevOps仓库路径中的!字符需要特殊处理。

以下是解决方案:

  1. 在go.mod中使用正确的转义格式
module your-module-name

go 1.14

require (
    dev.azure.com/myorganization/!myproject/_git/reponame.git v0.0.8
)

replace dev.azure.com/myorganization/!myproject/_git/reponame.git => dev.azure.com/myorganization/!myproject/_git/reponame.git v0.0.8
  1. 或者使用完整的解决方案
module example.com/myapp

go 1.14

require (
    dev.azure.com/myorganization/v1/_git/reponame.git v0.0.8
)

replace dev.azure.com/myorganization/v1/_git/reponame.git => dev.azure.com/myorganization/!myproject/_git/reponame.git v0.0.8
  1. 设置GOPRIVATE环境变量
export GOPRIVATE=dev.azure.com/myorganization/*
  1. 配置git凭证(如果仓库需要认证):
git config --global url."https://user:token@dev.azure.com".insteadOf "https://dev.azure.com"
  1. 完整示例代码
// main.go
package main

import (
    "fmt"
    _ "dev.azure.com/myorganization/!myproject/_git/reponame.git"
)

func main() {
    fmt.Println("Module imported successfully")
}

关键点:

  • Go模块路径中的!需要保持原样,不需要URL编码
  • 确保git配置正确,能够访问Azure DevOps仓库
  • 使用GOPRIVATE环境变量避免公共代理的干扰
  • 如果仍然遇到问题,尝试使用go get -insecure标志(仅用于测试环境)

错误信息中的203 Non-Authoritative Information通常表示代理服务器或认证问题,确保你的git凭证配置正确。

回到顶部