标签: go-modules

go.mod 中的“不兼容”是什么意思,会造成伤害吗?

我在我的项目中使用goczmq,如下所示:

main.go:

package main

import (
    _ "github.com/zeromq/goczmq"
)

func main() {
}
Run Code Online (Sandbox Code Playgroud)

而且,我使用 golang 1.12 和 gomod 来管理我的项目。

看接下来,我使用go mod init xxx,并且在构建时,它会自动为我下载 goczmq 并将依赖项添加到go.mod,但其中有incompatible。(但对于其他图书馆,我可能会得到类似的东西github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181

go.mod:

module pigeon

go 1.12

require (
    github.com/zeromq/goczmq v4.1.0+incompatible
)
Run Code Online (Sandbox Code Playgroud)

从一些讨论(对于其他图书馆),例如this,图书馆所有者似乎应该做些什么来支持 golang 1.12?但在我的情况下,一切正常,只是incompatible让我有点担心(我的意思是现在一切都很好,但是有一天当我使用我以前从未使用过的 api 时,那里会有隐藏的炸弹......?)

所以我的问题:

我应该担心这个,还是正如预期的那样?

go go-modules

70
推荐指数
3
解决办法
2万
查看次数

如何设置 GOPRIVATE 环境变量

我开始研究一个Go项目,它使用 Github 私有存储库中的一些私有模块,每当我尝试运行go run main.go它时,都会出现以下410 Gone错误:

验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone

我可以轻松地从终端克隆私有 repo,这意味着我的ssh密钥配置正确。我在这里读到我需要设置GOPRIVATE环境变量,但我不知道该怎么做。

任何人都可以回答或指向相关教程吗?

转到: v1.13,操作系统: macOS Mojave

environment-variables go go-modules

52
推荐指数
3
解决办法
5万
查看次数

为什么从 Go 1.17 开始 go.mod 中有两个“require”块?

我创建了一个小型 go 应用程序。几天前,我从 go 1.15 升级到 1.17,并且还使用go get -u. 更改后,我的 go.mod 文件中有 2 个 require 块。为什么?这是什么意思?没问题还是有什么东西坏了?

应用程序仍然可以正确构建。

go.mod 文件:

module github.com/jozo/simple-pomodoro

go 1.17

require (
    fyne.io/fyne/v2 v2.1.0
    github.com/dsnet/golib/memfile v1.0.0
    github.com/faiface/beep v1.1.0
    github.com/fsnotify/fsnotify v1.5.1 // indirect
    github.com/go-gl/gl v0.0.0-20210905235341-f7a045908259 // indirect
    github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210727001814-0db043d8d5be // indirect
    github.com/godbus/dbus/v5 v5.0.5 // indirect
    github.com/hajimehoshi/oto v1.0.1 // indirect
    github.com/srwiley/oksvg v0.0.0-20210519022825-9fc0c575d5fe // indirect
    github.com/srwiley/rasterx v0.0.0-20210519020934-456a8d69b780 // indirect
    github.com/yuin/goldmark v1.4.1 // indirect
    golang.org/x/exp v0.0.0-20210916165020-5cb4fee858ee // indirect
    golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect
    golang.org/x/mobile v0.0.0-20210924032853-1c027f395ef7 // indirect
    golang.org/x/net v0.0.0-20210929193557-e81a3d93ecf6 // …
Run Code Online (Sandbox Code Playgroud)

go go-modules

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

go mod download 和 go mod tidy 之间的区别

go mod download和之间有什么不同go mod tidy

当我运行时go mod tidy,如果找不到导入,它也会下载它。

go go-modules

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

如何使用 go modules 删除已安装的包

我已经使用 go modules 安装了一个包(go get in Go 1.13),现在我想删除它。在文档中没有任何关于此的内容,并且在go get docu 中也没有。

手动从 go.mod 中删除包并不能解决问题,因此它保留在 go.sum 中。

我应该如何以干净的方式移除包裹?

go vgo go-modules

32
推荐指数
2
解决办法
3万
查看次数

如何在 go mod 中升级 go 版本

在 go mod 中升级 go 版本的正确方法是什么,特别是 1.13 到 1.14?
您是否只需编辑 go.mod 文件并更改go 1.13go 1.14?

我不是在问如何编辑 go.mod 文件,我是在问简单地更改 go.mod 文件中的 go 版本是否合适,并且其他所有内容(所有依赖项)对于项目来说仍然可以?

go go-modules

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

使用模块时,Go get找不到本地包

我遇到了go新模块系统的问题,因为我想定义一个本地模块并将其导入主程序中.本地程序包驻留在主程序包/根文件夹的文件夹中.想象一下以下的项目结构$GOPATH.

项目结构

./main.go

package main

import "fmt"
import "example.com/localModule/model"

func main() {
    var p = model.Person{name: "Dieter", age:25}
    fmt.Printf("Hello %s\n", p.name)
}
Run Code Online (Sandbox Code Playgroud)

./model/person.go

package model

type Person struct {
    name string
    age int
}
Run Code Online (Sandbox Code Playgroud)

在根文件夹中,我通过调用初始化了一个模块

go mod init example.com/localModule
Run Code Online (Sandbox Code Playgroud)

model/文件夹中,然后通过调用初始化子模块

go mod init example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)

错误

在根文件夹中调用以下命令失败.

$ go get
go build example.com/localModule/model: no Go files in

$ go build
main.go:4:8: unknown import path "example.com/localModule/model": cannot find module providing package example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)

go get的错误消息被切断了,我不会错误地解析它.

我不打算推动模块到服务器,并与只需要引用本地包的方式model,所以我选择了example.com/localModule/ …

module go go-modules

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

无法在 Golang 中导入本地模块

我正在尝试导入本地模块,但无法使用go mod. 我最初使用构建我的项目go mod init github.com/AP/Ch2-GOMS

\n

请注意,我的环境是go1.14,并且我使用 VSCode 作为编辑器。

\n

这是我的文件夹结构

\n
Ch2-GOMS\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 handlers\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hello.go\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n
Run Code Online (Sandbox Code Playgroud)\n

我的main.go代码:

\n
package main\n\nimport (\n    "log"\n    "net/http"\n    "os"\n\n    "github.com/AP/Ch2-GOMS/handlers" // This gives "could not import github.com/AP/Ch2-GOMS/handlers" lint error\n)\n\nfunc main() {\n\n    l := log.New(os.Stdout, "product-api", log.LstdFlags)\n    hh := handlers.NewHello(l)\n\n    sm := http.NewServeMux()\n    sm.Handle("/", hh)\n\n    http.ListenAndServe(":9090", nil)\n} \n
Run Code Online (Sandbox Code Playgroud)\n

我看不到本地模块的自动完成功能,例如handlers.NewHello.

\n

go build生成的go.mod内容:

\n
module github.com/AP/Ch2-GOMS\ngo …
Run Code Online (Sandbox Code Playgroud)

import module go go-modules

23
推荐指数
2
解决办法
5万
查看次数

为什么 go.sum 包含这么多旧包

我一直在进行一组项目,处理更新依赖项,但有一件事我没有明确的答案,这就是为什么生成的总和文件列出了每个依赖项的许多旧版本。

在我们的项目中,我们引入了一些漏洞,尽管 golang.org/x/crypto 我们通过replace带有安全修复程序的包发布指令解决了旧版本的问题,但这感觉不太正确,可能会将我们锁定在不安全的包版本中。

现在我已经更新了依赖于旧版本的包golang.org/x/crypto,并使用替换指令循环回包并尝试更新,但我仍然看到列出了旧的包。

我想知道这对我们的项目意味着什么,以及我如何才能找到为什么首先包含这些内容?

运行一个简单的命令 go mod why -m golang.org/x/crypto 表明唯一依赖的项目 golang.org/x/crypto 是我更新的项目。

go go-modules

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

GOPROXY=off 禁用模块查找,但 go env 显示 GOPROXY 已设置

当尝试查找某些模块时,我在 VS Code 中遇到问题,下图所示的错误表明我的 GOPROXY 设置为关闭,但当我运行 时go env,我看到 GOPROXY 实际上已设置:GOPROXY="https://repo1.mycompany.com/artifactory/api/go/golang-virtual,https://proxy.golang.org,direct"

我尝试过设置GONOPROXY='',正如此评论所建议的那样,但是在运行export GONOPROXY=export GONOPROXY=""并在新的终端选项卡中检查 go env 后,GONOPROXY 仍然设置为:GONOPROXY="*.mycompany.com"

按照 VS Code 的建议运行go mod tidy,会产生相同的错误消息。

我的 go 环境值是否有可能被设置在我不知道的地方,也许是 Go 环境变量的不同版本?预先致谢,非常感谢任何帮助。

VS Code 的错误截图: 在此输入图像描述

environment-variables go visual-studio-code go-modules goproxy

23
推荐指数
2
解决办法
3万
查看次数