【问题标题】:`go get` : unexpected end of JSON input`go get` : JSON 输入的意外结束
【发布时间】:2019-07-23 01:13:44
【问题描述】:

你使用的是什么版本的 Go (go version)?

$去版本 v1.12

模块yiigo 有标签v3.0.0,但是当我运行go get github.com/iiinsomnia/yiigo 时,它得到v2.1.0,当我运行go get github.com/iiinsomnia/yiigo@v3.0.0 时,它显示:go get github.com/iiinsomnia/yiigo@v3.0.0: unexpected end of JSON input

【问题讨论】:

    标签: go module


    【解决方案1】:

    主要问题似乎是 v3.0.0 版本的iiinsomnia/yiigo 在其go.mod 文件中的module 行末尾缺少所需的/v3

    https://github.com/iiinsomnia/yiigo/blob/v3.0.0/go.mod#L1

    module github.com/iiinsomnia/yiigo    <<<< wrong, missing required /v3 at end
    
    go 1.12
    
    require (
        github.com/go-sql-driver/mysql v1.4.1-0.20190217072658-972a708cf979
        ...
    

    这已得到纠正。

    因为它现在是一个适当的 v3 模块,所以 go get 命令应该在 @ 之前包含一个 /v3

    module github.com/iiinsomnia/yiigo/v3@v3.2.2
    

    来自Go modules wiki:

    如果模块是 v2 或更高版本,则模块的主要版本必须作为 /vN 包含在 go.mod 文件中使用的模块路径的末尾(例如,@987654333 @、require github.com/my/mod/v2 v2.0.0) 和包导入路径中(例如,import "github.com/my/mod/v2/mypkg")。

    此外,似乎打开了一个相关问题,其理论是奇怪的“JSON 输入意外结束”错误可能来自某些代理:

    https://github.com/golang/go/issues/30494

    【讨论】:

      【解决方案2】:

      我过去实现此目的的一种方法是使用git tags- 对于您的情况,这应该可以正常工作。

      步骤:

      1. go get -u github.com/iiinsomnia/yiigo
      2. cd ~/go/src/github.com/iiinsomnia/yiigo
      3. git tag
      4. 在列表中找到您要安装的标签发布版本
      5. git checkout v3.0.0
      6. go install

      这将覆盖之前安装在您的 GOPATH 中的包,并使用您签出的特定标签版本的新包。

      注意:自 go 模块发布以来,可能有更好的方法来做到这一点。

      This 相关帖子还提供了有关如何检索项目源代码的特定版本的替代解决方案,这可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-10
        • 2015-08-05
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 2015-03-15
        • 2018-05-15
        • 1970-01-01
        相关资源
        最近更新 更多