问题标签 [go-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8813 浏览

go - 如何使用带有版本化 Go 模块的分叉模块(v1.11+,GO111MODULE=on)

分叉了一个 go模块,并想在我的项目中使用通过v1.12. 我的代码不在我的GOPATH.

我的项目go.mod

protoc-gen-twirp_typescript 是一个工具protoc,所以这是我的tools.go

当我运行go mod tidy下载我的依赖项时,我收到此错误:

为什么我会收到此错误?我认为替换指令go.mod允许分叉模块 go.mod保持不变。

0 投票
1 回答
756 浏览

go - 我应该在生产中使用 go 模块吗

我正在使用dep,但我被Go 1.11 中内置的Go Modules所吸引

在文档中,它说:

Go 1.11 包括对此处提议的版本化模块的初步支持。模块是 Go 1.11 中的一项实验性可选功能,计划在 Go 1.13 中整合反馈并最终确定该功能。尽管某些细节可能会发生变化,但未来的版本将支持使用 Go 1.11 或 1.12 定义的模块。

尽管如此,Go Modules 似乎被社区广泛使用,并且运行良好。

那么,对于一个新项目,我应该使用 Go Modules,还是应该坚持使用dep?我需要帮助才能做出决定。

0 投票
1 回答
350 浏览

go - Go Module : main.go 文件在 go build 后被覆盖

我面临一个奇怪的问题,在使用 go 模块供应我的依赖项之后,go build 命令用随机数据覆盖 main.go 文件。

文件的开头如下所示:

去版本:去版本go1.12.5 darwin/amd64

启用 Go 模块化export GO111MODULE=on

文件夹结构:go.mod go.sum log.go main.go vendor

仅供参考:只有 main.go 被覆盖,而不是 log.go。

Go 模块初始化为go mod init

应用程序供应商go mod vendor

不确定我是否做错了什么。任何帮助表示赞赏。

0 投票
1 回答
576 浏览

go - Go mod 下载得很好,但 golint 在假定下载的依赖项上失败了

在 Gitlab CI 中,我需要指定GITLAB_DEPLOY_TOKEN,因为我有一些私有存储库。这适用于编译步骤。

但是当我执行 golint 时,它会再次下载所有依赖项,并且它会在私有依赖项上失败。我可以添加相同的git config指令,

图片:golang 变量:PACKAGE_PATH:/go/src/gitlab.com/company/sam/daemon PACKAGE_API_NAME:registry.gitlab.com/company/sam/daemon REGISTRY_URL:https ://registry.gitlab.com DOCKER_DRIVER:覆盖 GO111MODULE: “上”

.anchors: - &inject-gopath mkdir -p $(dirname ${PACKAGE_PATH}) && ln -s ${CI_PROJECT_DIR} ${PACKAGE_PATH} && cd ${PACKAGE_PATH}

我在这里读到go 模块被缓存,$GOPATH/pkg/mod但它似乎不起作用

知道我应该如何解决它吗?

0 投票
1 回答
15202 浏览

go - 如何使用 Go 模块修复 Go 构建错误“无法加载包”?

我正在本教程中使用 Go 模块设置一个新项目,然后尝试构建它。

该模块位于 $GOPATH 之外的文件夹中,结构如下:

我已经go mod init example.com/my-project在目录中运行example.com/my-project并创建了上面显示的 go.mod 文件。

main.go有基本内容:

尝试go build在目录中运行后example.com/my-project,我收到以下错误消息:

can't load package: package example.com/my-project: unknown import path "example.com/my-project": cannot find module providing package example.com/my-project.

我也尝试go build在目录/之外运行example.com/my-project,我得到了类似的失败结果:

can't load package: package .: no Go files in ...

我可能有一些基本的错误,所以感谢您的耐心和您可以提供的任何帮助。

0 投票
3 回答
13744 浏览

go - 使用“go get”下载二进制文件而不将它们添加到 go.mod

我在我的项目和构建系统(例如 Travis CI)中使用 Go 模块我正在下载一个命令行实用程序(用 Go 编写)go get来帮助我的构建过程,例如:

但是,这go get会导致文件被添加到我的go.mod文件中。这污染了构建环境,导致它“脏”(因为在 git 中跟踪的某些文件发生了更改,在本例中为 go.mod 和 go.sum),我用它git describe --always --dirty --tag来描述我的构建,它显示为“肮脏的”。

有没有办法“去获取”一个二进制文件来下载它,而不将它添加到 go.mod/go.sum 中?

我已经尝试将 GOPATH 设置到其他地方,即使那样,也会go get更新 go.mod/go.sum 以将其添加为// indirect依赖项。

0 投票
2 回答
6282 浏览

go - 具有多个模块的单存储库中的 Go 模块名称是否有约定?

在多模块存储库中,模块名称(通过 go.modmodule指令设置)是否应该遵循包命名约定?

例如module github.com/org-name/repo-name/path/to/module-dir

我知道,无论模块命名如何,模块中的包都使用模块名称作为前缀相互引用。但是,从模块外部来看,如果模块名称设置为模式以外的名称,似乎会出现问题<host><path-within-repo>get-ing 一个包含在模块中的包,然后给出关于unrecognized import path.

是否有任何理由以不同的方式命名模块<host><path-within-repo>

0 投票
1 回答
2506 浏览

go - Go Modules - 如何在 GitHub 中引用分支

我正在使用Coreos OIDC 库,并且想知道如何引用(在go.mod文件中)分支,因为它们不是在其下开发master而是使用v2

我试过github.com/coreos/go-oidc@v2但我得到:

0 投票
1 回答
2693 浏览

git - 通过没有 SSL 的 HTTP 使用带有私有存储库的 Go 模块

有没有办法强制go命令使用 HTTP 而不是 HTTPS?

我正在尝试将一个项目移动到 Go Modules,但该项目包含一个私有git存储库作为依赖项。此git存储库托管在防火墙后面的私有 LAN 中,我通常使用cd $GOPATH/git.ourdomain.net/foo/bar/ && git clone http://my-user:my-password@git.ourdomain.net/foo/bar/reponame.git.

但是现在命令go modgo get并且go test正在尝试将 HTTP 与 SSL (HTTPS) 一起使用。

此设置没有帮助:

(在此处查看git有关私有存储库设置的一些上下文:https ://medium.com/cloud-native-the-gathering/go-modules-with-private-git-repositories-dfe795068db4 )

我已经修改了文件go.mod以包含对该私有存储库的引用(使用类似的模式git.ourdomain.net/foo/bar/reponame@v0.0.0-<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>),但是当使用包含该私有存储库go test的文件调用时go.mod,我看到:

我还尝试恢复go.mod到原始版本(没有该私有存储库)并尝试go get从存储文件的路径恢复go.mod,假设它将go.mod通过 HTTP 以某种方式更新文件,因为-insecure(查看此处https://golang.org /cmd/go/#hdr-Module_aware_go_get),像这样:

但这给出了错误消息:

我知道我应该使用 SSL,但我从来没有控制过这个git服务器来配置它应该配置的方式。所以我只是使用git clone提供一个 HTTP URL(在防火墙后面)并且它总是有效的。

0 投票
1 回答
1533 浏览

go - 使用 Go Modules 时生成 in-repo 原型的最佳实践

tl;dr以前配置为使用的 repoGOPATH现在配置为模块。一切都好,越来越好。但是,github.com/path/to/repo/protos当我现在更喜欢在我的源代码中生成这些在GOPATH. 我正在移动他们来解决这个问题。有更好的解决方案吗?


我有一个 GitHub 存储库。为了讨论,我们称之为github.com/acme/toolbox。在子目录中,我有 protobuf 文件,其中包括:

当我正在运行时GOPATH,一切都很好,并且protoc会在其中生成 Golang 绑定,$GOPATH/src/github.com/acme/toolbox/protos并且我的代码 importingpb "github.com/acme/toolbox/protos"可以正常工作。

迁移到Go Modules并非没有痛苦,但好处大于成本,我正在为自己和代码进行面向未来的验证。

我的问题是我看不到如何protoc将 Golang 绑定生成到我的任意位置和GOPATH定位克隆之外。

我在生成文件后移动文件,但这感觉......不优雅:

有更好的解决方案吗?