登录
首页 >  Golang >  Go问答

Go 不支持导入 GitHub 包

来源:stackoverflow

时间:2024-03-11 12:18:31 107浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Go 不支持导入 GitHub 包》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

go/golang 新手,我正在尝试更好地理解它的包/依赖管理系统。

我从 github 克隆了这个简单的 web 服务存储库,并尝试使用 go run main.go 运行它。在该 main.go 文件中:

package main

import (
    "log"
    "net/http"
    "strconv"

    "github.com/wpferg/services/httphandlers"
    "github.com/wpferg/services/storage"
    "github.com/wpferg/services/structs"
)

const port = 8080

var messageid = 0

func createmessage(message string, sender string) structs.message {
    messageid++
    return structs.message{
        id:      messageid,
        sender:  sender,
        message: message,
    }
}

func main() {
    log.println("creating dummy messages")

    storage.add(createmessage("testing", "1234"))
    storage.add(createmessage("testing again", "5678"))
    storage.add(createmessage("testing a third time", "9012"))

    log.println("attempting to start http server.")

    http.handlefunc("/", httphandlers.handlerequest)

    var err = http.listenandserve(":"+strconv.itoa(port), nil)

    if err != nil {
        log.panicln("server failed starting. error: %s", err)
    }
}

当我运行这个(run go main.go)时,我得到:

main.go:8:2: cannot find package "github.com/wpferg/services/httpHandlers" in any of:
    /usr/local/go/src/github.com/wpferg/services/httpHandlers (from $GOROOT)
    /Users/myuser/go/src/github.com/wpferg/services/httpHandlers (from $GOPATH)
main.go:9:2: cannot find package "github.com/wpferg/services/storage" in any of:
    /usr/local/go/src/github.com/wpferg/services/storage (from $GOROOT)
    /Users/myuser/go/src/github.com/wpferg/services/storage (from $GOPATH)
main.go:10:2: cannot find package "github.com/wpferg/services/structs" in any of:
    /usr/local/go/src/github.com/wpferg/services/structs (from $GOROOT)
    /Users/myuser/go/src/github.com/wpferg/services/structs (from $GOPATH)

所以,go似乎支持一种通过http从github“获取”其他包的方法,但由于某种原因,当我在本地运行它时,它期望包是本地的。

我该如何解决此问题以便解决其他软件包?为什么 go 在本地查找它们而不是通过 url 获取它们?


解决方案


问题是这个存储库来自 go modules 之前的时代,并且不使用任何依赖管理系统。修复它的最简单方法是尝试将其初始化为模块(如果您使用 go < 1.14 设置环境变量 go111module=on):

go mod init github.com/wpferg/services

然后运行:

go run main.go

它将自动解决其依赖关系并尝试启动程序。

附注但是,考虑到它是一个较旧的代码,并且不清楚它是用什么 golang 版本(和软件包版本)编写的,它很可能无法工作,或者以某种方式被破坏。

就我而言,导入工作了很长一段时间,然后突然不起作用了。

我通过在控制台中运行 go mod tidy 修复了它。

理论要掌握,实操不能落!以上关于《Go 不支持导入 GitHub 包》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>