Golang中无法导入github.com/u-root/u-root/pkg/curl的问题

Golang中无法导入github.com/u-root/u-root/pkg/curl的问题 你好

尝试导入以下内容时,我在 github 的模块上收到错误。许多包含 github 的模块也存在同样的问题。

import (

"math"

"github.com/u-root/u-root/pkg/curl"

)

无法导入 github.com/u-root/u-root/pkg/curl (在 GOROOT 中找不到包 “github.com/u-root/u-root/pkg/curl”) 编译器损坏的导入

我已经尝试了多种修复方法,但仍然无法使其正常工作。我没有设置 go.mod 文件。

当前 GO 环境变量

set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\matt\AppData\Local\go-build
set GOENV=C:\Users\matt\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\matt\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\matt\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.23.1
set GODEBUG=
set GOTELEMETRY=local
set GOTELEMETRYDIR=C:\Users\matt\AppData\Roaming\go\telemetry
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=NUL
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\MATT~1\AppData\Local\Temp\go-build4268344471=/tmp/go-build -gno-record-gcc-switches

非常感谢任何帮助。

谢谢


更多关于Golang中无法导入github.com/u-root/u-root/pkg/curl的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

感谢您的反馈。我会尝试一下并更新。

更多关于Golang中无法导入github.com/u-root/u-root/pkg/curl的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


请检查是否存在从 GOPATH 导入的引用包。 (为什么不使用 go.mod?这主要是为了方便。)

我已经按照建议尝试了,但仍然无法正常工作。附上了包含 go.mod 文件和输出的屏幕截图。

image

你好

这是我的 GOPATH 中的内容

image

抱歉,我对 GO 还比较陌生。

使用 GO.MOD 的话,我是不是只需要创建它并把模块路径放进去?

谢谢

新手?那就使用 go.mod! 执行以下命令: cd (你的项目路径) go mod init (你的项目域名,例如 github.com/xxx/yyyy,这个域名通常是项目可访问的路径,如果你的项目希望被引用;当然,你也可以随便填写) go mod tidy

// 示例代码块
func main() {
    fmt.Println("hello world")
}
import cycle not allowed

这不是模块的问题,是你的代码有问题。 检查你的代码中是否存在包循环。 如果你不知道什么是包循环,那么你应该去查阅相关书籍。

另外,根据你的模块文件,你正在处理的项目是 github.com/u-root/u-root/pkg/curl。为什么会导入 github.com/u-root/u-root/pkg/curl 呢?

看起来,您使用想要导入的模块名称来初始化了您的模块。由于您尝试导入的模块正是您用来初始化模块的那个,所以错误信息大致是在说“我无法导入自己”。请尝试使用 go mod init example.com/matt/testing

这是一个在 Playground 上成功导入该模块的示例:

func main() {
    fmt.Println("hello world")
}

这个问题是因为没有使用Go模块导致的。错误信息显示GOMOD=NUL,说明当前目录没有go.mod文件。在Go 1.16+版本中,模块模式是默认启用的。

以下是解决方案:

1. 初始化Go模块:

go mod init your-module-name

2. 然后运行go mod tidy来自动下载依赖:

go mod tidy

3. 如果仍然有问题,可以尝试手动添加依赖:

go get github.com/u-root/u-root/pkg/curl

完整示例:

// 首先在项目根目录执行:
// go mod init example
// go mod tidy

package main

import (
    "fmt"
    "math"
    "github.com/u-root/u-root/pkg/curl"
)

func main() {
    fmt.Println("Pi value:", math.Pi)
    
    // 使用curl包
    c := curl.New("https://example.com")
    resp, err := c.Do()
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()
    
    fmt.Println("Response status:", resp.Status)
}

如果遇到网络问题,可以设置GOPROXY:

go env -w GOPROXY=https://goproxy.cn,direct

检查模块状态:

go list -m all

这样应该能解决导入问题。模块系统会自动管理依赖版本和下载。

回到顶部