标签: go-modules

go模块安装go工具

我正在使用go模块作为依赖项管理,并且在安装这样的东西时遇到了问题:

go get -u github.com/go-critic/go-critic/...
Run Code Online (Sandbox Code Playgroud)

上面的结果是:

go: cannot find main module; see 'go help modules'
Run Code Online (Sandbox Code Playgroud)

go go-modules

9
推荐指数
4
解决办法
9368
查看次数

完全删除使用“go get”安装的软件包?

我正在使用 Go 1.13.1,截至今天最新。

我正在尝试go get从 GitHub 中完全删除我安装的软件包。本go clean -i <PACKAGE_NAME>似乎没有工作,因为有文件通过传播,至少,这些目录:

~/go/pkg/mod/github.com/<PACKAGE_NAME>
~/go/pkg/mod/cache/download/github.com/<PACKAGE_NAME>
~/go/pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/<PACKAGE_NAME>
Run Code Online (Sandbox Code Playgroud)

有没有办法在不手动删除所有内容的情况下清理所有内容?

package uninstallation go go-modules

9
推荐指数
1
解决办法
2万
查看次数

运行 go mod init 时出现未知的子命令“mod”错误

我已经使用sudo apt install golang-go.

它已成功安装。当我跑步时,go version我得到go version go1.10.4 linux/amd64

但是当我尝试跑步时,go mod init projectName我得到以下信息error go: unknown subcommand "mod"

我需要安装 mod 包还是我遗漏了什么?我已经在这个论坛中实施了 christophe 给出的解决方案,但它对我不起作用。

go go-modules

9
推荐指数
1
解决办法
9671
查看次数

Goland 无法使用 Go 1.14 识别我的供应商目录

当我打开 Goland 项目时,会运行以下命令:

/usr/local/Cellar/go/1.14/libexec/bin/go list -m -json all #gosetup
Run Code Online (Sandbox Code Playgroud)

它的输出是以下错误:

go list -m: can't compute 'all' using the vendor directory
    (Use -mod=mod or -mod=readonly to bypass.)
Run Code Online (Sandbox Code Playgroud)

Goland 无法解析我正在导入的包。当我从命令行构建和运行项目时,它工作正常。

我的项目结构如下:

app/
    bin/
    pkg/
    src/
        app/
            cmd/
            vendor/
            go.mod
Run Code Online (Sandbox Code Playgroud)

GOROOT/usr/local/Cellar/go/1.14/libexec和我GOPATHapp/

在 Goland 设置中,在 Go/GOPATH 下选中了“使用系统环境中定义的 GOPATH”和“索引整个 GOPATH”的框。

在 Go/Go 模块 (vgo) 下,我已选中“启用 Go 模块 (vgo) 集成”和“供应商模式”

当我改变了我刚才注意到GOPATH/Users/myname/sdk/go1.13.4,问题就解决了。这可能是 Homebrew 的问题,还是我不知道的 go 1.14 引入的更改?

我在描述这个问题时详尽无遗,因为我不熟悉 Go,可能会遗漏一些明显的东西。谢谢!

go goland go-modules

9
推荐指数
1
解决办法
5084
查看次数

go mod tidy 错误消息:“但是 go 1.16 会选择”

当我运行go mod tidy几个包时显示错误

> go mod tidy

github.com/myrepo/myproj imports
    go.k6.io/k6 imports
    go.k6.io/k6/cmd imports
    github.com/fatih/color loaded from github.com/fatih/color@v1.12.0,
    but go 1.16 would select v1.13.0

To upgrade to the versions selected by go 1.16:
    go mod tidy -go=1.16 && go mod tidy -go=1.17
If reproducibility with go 1.16 is not needed:
    go mod tidy -compat=1.17
For other options, see:
    https://golang.org/doc/modules/pruning
Run Code Online (Sandbox Code Playgroud)

我已经安装了 go 1.17.9。该错误的含义是什么?为什么会触发该错误?

go go-modules

9
推荐指数
2
解决办法
1万
查看次数

go mod tidy "all" 没有匹配任何包

我用这个创建了一个 go 模块:

go mod init rtws
vim main.go # pasted a bunch of code from an example
go mod tidy
Run Code Online (Sandbox Code Playgroud)

这两个文件都导入“github.com/gorilla/websocket”,所以当我使用时,tidy我期望它会下载该依赖项,但我收到以下警告:

go: warning: "all" matched no packages

随后尝试运行它时抱怨依赖项不存在。
这个错误是什么意思?

编辑:在搜索时,我发现的最相关的事情是SO 上的另一个问题。很多人在运行其他命令时都会出现此警告,但他们的解决方案不适用于这种特定情况。

package go go-modules

9
推荐指数
1
解决办法
1万
查看次数

在 monorepo 环境中发布 go 模块

假设我有一个 monorepo 并且有几个单独的 golang 服务:

\n
root    \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 services\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 svc1\n        \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n        \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n        \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 svc2\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n
Run Code Online (Sandbox Code Playgroud)\n

而 svc2 将来将依赖于 svc1。另外,要求svc1和svc2可以单独释放。

\n

有没有办法可以单独发布模块?go mod 文档仅假设只有 repo,因此它不提供这样的灵活性。

\n

go go-modules

8
推荐指数
1
解决办法
2517
查看次数

构建没有主文件的 Go 模块

我有一个小模块,其中包含一些共享代码。该模块如下所示:

\n
Shared\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 logging\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 logger.go\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 db-utils\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db.go\n
Run Code Online (Sandbox Code Playgroud)\n

如果我尝试从目录内部构建共享模块,我会收到一条错误消息,指出该模块下没有可用的 go 文件。

\n
bash-3.2$ go build .\nno Go files in /Users/xxxx/go/src/Shared\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法构建一个内部只有包而没有 main.go 文件的 Go 模块?这里的动机是在无法访问互联网或私人存储库的其他 go 模块中使用这些包来检索包。

\n

go go-modules

8
推荐指数
2
解决办法
1万
查看次数

当我使用any而不是interface{}时,为什么会收到“未声明的名称:any(需要版本go1.18或更高版本)”?我正在使用Go 1.18

当尝试使用Go 1.18 工具链代替时,您可能会收到错误消息anyinterface{}

undeclared name: any (requires version go1.18 or later)
Run Code Online (Sandbox Code Playgroud)

这是为什么?如何解决?在 Go 1.18 中引入any

go go-modules

8
推荐指数
1
解决办法
2万
查看次数

预编译Golang项目依赖缓存

简而言之,我当前的用例涉及在 Docker 容器内动态创建 Golang 插件。编译涉及用户的一些新输入(这就是为什么不预先编译的原因),但依赖项是静态的,不会改变。

目前,完整的编译是在 Docker 容器内从头开始完成的(尽管go mod download用于减少一点时间)。我注意到该go build命令最终会编译大量依赖项,这会为插件编译增加大量时间,从而影响我的应用程序的可用性。

是否有 Go 支持的方法或命令来读取go.mod文件并填充GOCACHE目录?使用这样的命令,我将自行运行它Dockerfile,使 Docker 映像包含带有所有已编译构建依赖项的缓存。

我尝试过的:

  1. go mod download:这仅下载依赖项;它不会编译它们。
  2. 我确实有一个临时解决方法:我创建了一个main.go导入所有依赖项的准系统,并go build在我的内部运行Dockerfile以填充缓存。如前所述,这确实解决了我的问题,但感觉有点像黑客。此外,如果将来依赖项发生变化,也需要有人进行更改,这并不理想。
  3. 我在网上看到的很多答案都涉及 CI/CD。使用 CI/CD,容器只需安装到主机上的一个分区,其中包含运行后保留的缓存。这并不能解决我眼前的问题,即构建容器本身的问题。

go go-build go-modules

8
推荐指数
1
解决办法
792
查看次数

标签 统计

go ×10

go-modules ×10

package ×2

go-build ×1

goland ×1

uninstallation ×1