问题标签 [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.
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保持不变。
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
?我需要帮助才能做出决定。
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
不确定我是否做错了什么。任何帮助表示赞赏。
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
但它似乎不起作用
知道我应该如何解决它吗?
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 ...
我可能有一些基本的错误,所以感谢您的耐心和您可以提供的任何帮助。
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
依赖项。
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>
?
go - Go Modules - 如何在 GitHub 中引用分支
我正在使用Coreos OIDC 库,并且想知道如何引用(在go.mod
文件中)分支,因为它们不是在其下开发master
而是使用v2
。
我试过github.com/coreos/go-oidc@v2
但我得到:
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 mod
,go 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(在防火墙后面)并且它总是有效的。
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
定位克隆之外。
我在生成文件后移动文件,但这感觉......不优雅:
有更好的解决方案吗?