问题标签 [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 投票
1 回答
5529 浏览

docker - Go 1.11 Docker build 中自己的包的未知导入路径

我正在迁移一些代码以使用 Go 1.11 模块,并且我能够从 shell 构建它,但不能在 Docker 中构建它。

相关的 Dockerfile 部分:

当 Docker 运行上述摘录中的最后一个命令时,我收到此错误:

我没有在 shell 中得到这个,所以我猜我没有正确复制一些文件。但在此命令运行之前,我已经复制了go.modgo.sum*.go,所以我不知道可能缺少什么。

0 投票
1 回答
497 浏览

go - 展平主依赖的供应商传递依赖

我一直在将现有项目从通过Glide使用 vendored 依赖项转换为使用 Go 1.11.x模块支持。但是我在一个项目中使用我无法解决的模块遇到了一个特殊情况。

内部项目“foo”的依赖项通过“go mod vendor”提供:

这在内部构建该项目时非常有用,因为非 Go 开发人员可以将项目克隆到任何位置并构建它,而无需外部代理访问来下载依赖项。

现在我正在尝试允许项目“bar”使用库“foo”构建工具。

“go.mod”文件仅包含:

我会通过以下方式供应商:

我通过以下方式构建:

我看到的是“foo”将从内部 git 存储库中克隆,并且它的所有依赖项都将从其远程 git 源下载,并且我的“go.sum”文件将使用所有临时依赖项进行更新。但我真正想要的是只从我的内部网络中获取 'foo' 并让它扁平化供应商的依赖项。理想情况下,不应有外部 http 请求。

这甚至可能吗?在直接构建项目“foo”时,“-mod=vendor”标志非常有用。但它似乎不适用于这里,因为项目“bar”不想供应商。它想要获得一个主要的依赖,就是这样。似乎 Go 模块支持并不关心扁平化供应商的瞬态依赖关系。

以前glide用作包管理器时,它会从内部 git 存储库中获取“foo”,然后将其所有依赖项扁平化到我的供应商目录中。

最初作为问题发布到 golang-nuts,没有回复。

0 投票
1 回答
242 浏览

go - 如何使用 go mod vendor 从 GOPATH 复制 deps?

如何制作go mod vendor复制依赖GOPATH项而不是通过网络下载它们?

0 投票
1 回答
126 浏览

go - Where does go put imports when using modules with no GOPATH set?

I'm toying around with converting a project at work to be a module. My understanding is it should make deploys much easier since $GOPATH won't have to be set up properly.

In my existing project I ran go mod init <project path>, and checked in go.mod and go.sum. As a test, I opened a new terminal, unset GOPATH, cloned my project into /tmp, go build, and everything worked great but it left me with questions. I expected my imports to be downloaded into a vendor folder but nothing.

Where does go modules put the packages it has to go get when no $GOPATH is set?

0 投票
1 回答
11142 浏览

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

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

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

有什么建议么?

0 投票
1 回答
1399 浏览

go - 构建一个多可执行的 Go 项目

我正在尝试在 Go 中构建一个微服务架构项目。我目前正在使用支持模块的 Go 1.11,所以我将根目录放在任意选择的目录中,在GOPATH.

如果我的微服务架构概念正确,虽然我的微服务需要独立,但它们可以共享依赖项(而且我没有看到另一种做事方式,是吗?)

下面是我的目录结构:

现在我期望的行为是能够运行go build lambda/account_create并获得具有该功能的可执行文件,以便我可以将其提供给相应的 AWS Lambda 函数。

但是,当我运行命令时,我得到:

请解释我为什么这不起作用,并就这样的项目应该如何看待给我一些建议。

非常感谢!

编辑这是我的lambda/account_create/main.go文件内容:

0 投票
2 回答
5823 浏览

go - 使用 /cmd 结构构建 Go 模块时出错

我是新来的模块,并且正在将它们用于一个新项目中,我试图在此处描述的结构之后对其进行建模

这是我的目录结构的示例:

  1. 这在惯用语上正确吗?我知道那里没有很多共识,但我想遵循最佳实践。
  2. 当我运行时,go build我得到'意外的模块路径“github.com/ragurney/app_name/cmd/app_name”',但是当我运行go build ./...它时它可以工作。为什么?

当我移动main.go到顶层时,一切都按预期工作。我不应该将/cmd模式与模块一起使用吗?

0 投票
3 回答
2749 浏览

go - 获取模块名称的 API

是否有 API 可以获取使用 go 1.11 模块系统的项目的模块名称?

所以我需要abc.com/a/m从文件中的模块定义module abc.com/a/mgo.mod获取。

0 投票
2 回答
9081 浏览

go - 在本地使用带有 go mod 的子包

我有一个位于我的文件系统($GOPATH不在bitbucket.org/me/awesome.

我的go.mod样子:

main.go我的顶级目录中,我调用如下子包:

这一切似乎都很正常。go get作品。但是,当我将整个存储库克隆到其他地方(比如在 Docker 映像中)并第一次运行go get时,我会收到如下错误:

package bitbucket.org/me/awesome/subpackageA: https://api.bitbucket.org/2.0/repositories/me/awesome?fields=scm: 403 Forbidden,

这意味着它没有使用包的本地文件系统版本,即使我用文件中的指令replace告诉go.mod它。

我究竟做错了什么?如何确保从文件系统使用子包,而不是尝试从 Internet 获取?

0 投票
7 回答
31745 浏览

go - 安装 go 工具的 go 模块

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

上面的结果是: