GoLang:模块导入权限被拒绝,使用 GoLand IDE

问题描述

在新安装的 Ubuntu 上,我通过 snap 包管理器安装了 golang。我通过 Ubuntu 软件商店安装了 GoLand,我相信它也依赖于 snap。我运行了几个简单的程序来确保功能。 “hello world”按预期工作。

我现在的目标是成功使用一个简单的 api。我读了 this article on using structs to map the api response,但我不想要整个响应,我只想要响应中的一个字段,所以我发现 this module called gab 允许您只从 json 响应中获取一个字段。

我认为这看起来很简单,但是当我尝试使用该工具时,我的 IDE 通知Cannot resolve directory 'Jeffail'。有使用带有 go get 标志的 -t 命令下载模块的上下文建议。这样做后,我收到错误

github.com/Jeffail/gabs(下载)包 github.com/Jeffail/gabs/...: mkdir /snap/bin/src: 权限被拒绝`

因此,由于权限问题,导入脚本无法创建目录。我尝试手动输入命令 go get -t github.com/Jeffail/gabs输出表明一切正常。

去:下载github.com/Jeffail/gabs v1.4.0

但 GoLand IDE 不同意,抛出相同的错误 Cannot resolve file 'gabs'。我尝试运行以 sudo 开头的命令,但这没有任何区别。我非常肯定我不应该使用 chmod 弄乱 snap 安装目录的权限。通过终端运行程序,我得到了更详细的输出和相同的消息。

在以下任何一个中都找不到包“github.com/Jeffail/gabs”: /snap/go/7221/src/github.com/Jeffail/gabs(来自 $GOROOT) /snap/bin/src/github.com/Jeffail/gabs(来自 $GOPATH)

这就是我正在做的事情。我只想输出比特币的价格:

package main

import (
    "fmt"
    "github.com/Jeffail/gabs"
    "io/IoUtil"
    "net/http"
    "os"
)

func main() {
    response,err := http.Get("https://api.coincap.io/v2/rates/bitcoin")
    if err != nil {
        fmt.Print(err)
        os.Exit(1)
    }
    responseData,err := IoUtil.ReadAll(response.Body)
    if err != nil {
        fmt.Print(err)
        os.Exit(1)
    }
    jsonParsed,err := gabs.ParseJSON(responseData)
    if err != nil {
        fmt.Print(err)
        os.Exit(1)
    }
    fmt.Print(jsonParsed.Path("data.rateUsd"))
}

我尝试过的其他事情:

  • 卸载并重新安装 go and goland
  • 使缓存无效并重新启动
  • 在 goland 中启用 vgo 模块
  • 疯狂搜索
  • 各种 usermod 调整
  • 卸载和重新安装通过 tarball 而不是 snap
  • 运行 vscode

谢谢。

编辑:

go env输出如下:

GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/no/.cache/go-build"
GOENV="/home/no/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/no/go/pkg/mod"
GOnopROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/no/go"
GOPRIVATE=""
goproxy="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.16.3"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONfig="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build4168829491=/tmp/go-build -gno-record-gcc-switches"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)