标签: go-modules

无法确定源目录的模块路径

go.mod里面有文件root/src/abc。在root/build-scripts我有一个脚本,它执行go get. 当我使用 Go 1.11 时,我没有使用 go 路径,而是使用 mod 文件root/src/abc处理其他导入,除了构建脚本中使用的包会产生错误:

go:无法确定源目录的模块路径。

有什么建议?

go go-modules

10
推荐指数
1
解决办法
7808
查看次数

Go Modules - 目录和包的命名约定

我知道Go Modules仍然是一个实验性的选择加入功能,也许正因为如此,我找不到关于如何命名目录和packages 的明确指导。
Go 博客文章中的这些包名称Effective Go 中的包名称中,他们谈到目录应该与包名称匹配 - 但我不确定 Go Modules 是否会遵循相同的模式。

如果我想将我的业务逻辑package business与许多文件捆绑在一起,创建子目录validators/并保持相同的包名package business是否合理?

someDir
??? business
?   ??? businessA.go // package business
?   ??? businessB.go // package business
?   ??? businessC.go // package business
?   ??? validators
?       ??? businessValidatorX.go // package business, or validators?
?       ??? businessValidatorY.go // package business, or validators?
?       ??? businessValidatorZ.go // package business, or validators?
??? …
Run Code Online (Sandbox Code Playgroud)

module go go-modules

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

如何以新的方式构建 Golang 模块和项目结构

似乎自 1.11 以来模块的使用方式发生了变化,我试图了解如何从另一个目录引用模块/包。

假设我有一个文件夹结构 \root\module1 \root\module2

我在每个目录中有一个 go.mod,我可以从 \root 目录访问/使用这些模块

如何从模块 1 访问模块 2。这些模块未在任何地方发布(我也不希望它们发布)-我只想访问它们。模块 2 包含我需要在 mondule1 中使用的类型/结构

亲切的问候马丁

go go-modules

10
推荐指数
1
解决办法
6319
查看次数

Golang - 如何从代码内部显示模块版本

我正在编写两个二进制文件,它们都使用两个库(我们可以称它们为 libA 和 libB)。

每个库都位于专用的 git 存储库中,并使用 git 标签来声明版本。例如,libA 的版本为 v1.0.9,libB 的版本为 v0.0.12。

两个二进制文件都有 CLI 标志,我想添加一个调试标志来显示 lib 版本,如下所示:

> ./prog -d
Used libraries:
- libA, v1.0.9
- libB, v0.0.12
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。

我看到从“外部”设置变量的唯一方法是使用 ldflags (go build -ldflags="-X 'main.Version=v1.0.0'"例如)。但这种方式似乎不可扩展,如何添加libC?它还意味着管理标签两次,一次在 git 中,一次在 goreleaser.yml 或 makefile 中。

你能帮我找到解决方案吗?

go go-modules

10
推荐指数
1
解决办法
5963
查看次数

如何对特定模块使用“go get”或“go modvendor”,而不尝试更新其他模块?

我正在尝试从 github 获取项目的特定包。

但是,当我使用go get [url]or时go mod vendor,由于缺乏对我公司的存储库之一的权限,我收到 git fetch 错误。这个存储库是供应的,这就是我们如何绕过它进行 go test、go build 等。

这是错误消息:

go: private.work.repo.com/project/repo@v0.0.0-20190703160253-9c6eb80851f1: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in C:\Users\NICHOLAS.TAN\go\pkg\mod\cache\vcs\37594aeb10b98234e04b4780cf59f32c4ad7bb9da460f552103ae748cea73aa1: exit status 128:
        fatal: remote error: Repository not found
        The requested repository does not exist, or you do not have permission to
        access it.
Run Code Online (Sandbox Code Playgroud)

有没有办法让我使用go get和/或go mod vendor不使用这些命令来尝试查看其他模块依赖项?

go govendor go-modules go-get

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

完全删除使用“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万
查看次数

标签 统计

go ×10

go-modules ×10

package ×2

go-get ×1

goland ×1

govendor ×1

module ×1

uninstallation ×1