标签: go-modules

Go 模块在 VSCode 中导入问题(“无法在任何 [...] 中找到包 [...]”)

我遇到了可能是 Gopls 语言服务器问题:在 VSCode 中使用带有 Go 扩展的 Go 模块时,我的所有外部包导入语句都被标记为不正确。这正是我到目前为止所做的:

在我的 GOPATH/src/github.com/Kozie1337/projectname 中:

  • 跑步go mod init github.com/Kozie1337/projectname
  • 跑步go get -u github.com/gorilla/mux

go.main 里面:

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"  // This is being marked as wrong with the err. msg. down below
)

func main() {
  r := mux.NewRouter() // This actually works, even though the go linter says that mux isn't imported
  http.ListenAndServe(":9000", r)) // server starts too with mux routes
}

[...]
Run Code Online (Sandbox Code Playgroud)

将鼠标悬停在github.com/gorilla/mux导入语句上时,出现错误:

could …
Run Code Online (Sandbox Code Playgroud)

go go-modules

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

如何确定哪个模块使用间接依赖?

在 Go 1.17 中,go.mod 有两个部分,直接依赖项和间接依赖项,但是没有指示间接依赖项与直接依赖项如何相关。

我如何找出特定的间接依赖关系是哪个或哪些模块使用它?

dependencies go go-modules

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

如何在另一个模块中使用"GOPATH"之外的模块?

我使用此命令"go mod init database"在"database"文件夹中的"GOPATH"之外创建了一个库作为个人使用的模块,我不知道:

  • 如何在另一个模块中使用/ 导入此模块?

操作系统:Windows 7,Go:v1.11

go go-modules

19
推荐指数
1
解决办法
6076
查看次数

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

分叉一个前进模块,并希望用叉子在我的项目使用版本控制模块通过v1.12。我的代码不在我的GOPATH.

我的项目go.mod

module github.com/me/myproj

go 1.12

require (   
    go.larrymyers.com/protoc-gen-twirp_typescript v0.0.0-20190605194555-ffbfe407b60f
)

replace go.larrymyers.com/protoc-gen-twirp_typescript => github.com/rynop/protoc-gen-twirp_typescript master

Run Code Online (Sandbox Code Playgroud)

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

// +build tools

package tools

import (
    // protocol buffer compiler plugins
    _ "github.com/golang/protobuf/protoc-gen-go"
    _ "github.com/mwitkow/go-proto-validators/protoc-gen-govalidators"
    _ "github.com/twitchtv/twirp/protoc-gen-twirp"
    _ "github.com/rynop/protoc-gen-twirp_typescript"
)

Run Code Online (Sandbox Code Playgroud)

当我运行go mod tidy下载依赖项时,出现此错误:

go: finding github.com/rynop/protoc-gen-twirp_typescript master
go: finding github.com/rynop/protoc-gen-twirp_typescript latest
go: github.com/rynop/protoc-gen-twirp_typescript@v0.0.0-20190618203538-a346b5d9c8fb: parsing go.mod: unexpected module path "go.larrymyers.com/protoc-gen-twirp_typescript"
Run Code Online (Sandbox Code Playgroud)

为什么我收到这个错误?我认为中的替换指令go.mod允许分叉模块 …

go protocol-buffers protoc go-modules

18
推荐指数
1
解决办法
7109
查看次数

在 Go 中使用测试依赖项但阻止导出它们的最佳方法

给定一个 Golang (1.14+) 项目,该项目使用测试依赖项(如 github.com/stretchr/testify),现在假设该项目是一个可供其他人使用的公共库。

通常,当我现在使用时,go mod graph我总是会看到这种依赖关系,例如:

github.com/its-me/my-great-library@1.0.0
github.com/stretchr/testify@v1.6.1 github.com/davecgh/go-spew@v1.1.0
github.com/stretchr/testify@v1.6.1 github.com/pmezard/go-difflib@v1.0.0
github.com/stretchr/testify@v1.6.1 github.com/stretchr/objx@v0.1.0
github.com/stretchr/testify@v1.6.1 gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c
gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405
Run Code Online (Sandbox Code Playgroud)

go mod tidy或者go mod download似乎还从使用的库下载所有测试依赖项。exclude但不是告诉每个人在他们的文件中使用,go.mod有没有办法甚至阻止它被导出?

testing go go-modules

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

从基于 GOPATH 的 dep 迁移到 go mod 时,格式错误的模块路径“xxxx/xxxx/uuid”在第一个路径元素中缺少点

$去版本
1.13.3

我有一个文件夹结构如下:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go
Run Code Online (Sandbox Code Playgroud)

my-auth-server使用my-api-server/my-utils/uuid作为depenency

现在,当我使用基于 GOPATH 的模块系统时,效果很好。但是,使用转到模块时,当我运行go run main.gomy-auth-server它返回的错误:

build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

go go-modules

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

使用 ssh 而不是 https(不在 github 上)

我们有一个只能通过 ssh/git (无 https)访问的私有代码存储库,并且我们希望在那里托管我们的 go 代码/模块。

首先我尝试:

git config --global url."git@code.internal.local:".insteadOf "https://code.internal.local/"
Run Code Online (Sandbox Code Playgroud)

因此,以下两项都可以正常工作:

  • git clone git@code.internal.local:reponame.git
  • git clone https://code.internal.local/reponame

go get code.internal.local/reponame失败了,因为 go 仍然坚持尝试 https://...而不是 git。

package code.internal.local/reponame: unrecognized import path "code.internal.local/reponame": https fetch: Get "https://code.internal.local/reponame?go-get=1": dial tcp 192.168.0.5:443: i/o timeout
Run Code Online (Sandbox Code Playgroud)

git go go-modules

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

如何找到Go模块源缓存?

我已经将项目升级到Go 1.11并为我的项目启用了模块支持,但似乎CircleCI正在重新下载每个构建的依赖项.我知道CircleCI允许在重建之间进行缓存,所以我查看了Go模块的文档,虽然它提到了缓存,但我似乎无法找到它实际存在的位置.

Go模块的源缓存在哪里?

go circleci go-modules

15
推荐指数
1
解决办法
6897
查看次数

如何使用godoc和go模块一起提供文档?

看来该godoc工具不支持Go模块

一个简单godoc -goroot=.的文件服务于项目文件,但它不会生成软件包的文档。我从projects源目录对它进行了测试,该目录还存储了go.modgo.sum模块文件。

如何为Go模块内部的所有软件包生成文档$GOPATH

Go 1.12发行说明中,该godoc工具将不包含在以后的Go版本中,并且只能go getGo 1.12之后使用。一个应该使用Go go doc命令。但是,go doc不会生成“很容易阅读”的HTML页面。从Go源代码生成输出HTML或Markdown的文档是否有替代方法?

documentation documentation-generation go go-modules

15
推荐指数
2
解决办法
1451
查看次数

go.sum的内容以及go应用真正使用的模块

我正在尝试将 go.sum 的行为go mod tidy(以及 go.sum 的结果内容)与 的输出进行比较go list -m all。\n阅读文档,我了解 go.sum 包含 go.mod 和依赖项中声明的依赖模块的完整列表\' go.mod 文件,go list -m all显示执行过程中真正加载的模块。\n例如,一个包含 logrus 和 prometheus 的应用程序如下所示:

\n

go.mod

\n
module mytest\n\ngo 1.14\n\nrequire (\n        github.com/prometheus/common v0.4.0\n        github.com/sirupsen/logrus v1.8.1\n)\n
Run Code Online (Sandbox Code Playgroud)\n

主程序

\n
package main\n\nimport "github.com/sirupsen/logrus"\nimport "github.com/prometheus/common/version"\n\nfunc main() {\n  logrus.Info("Hello World")\n  logrus.Infof("Prometheus info: %v", version.Info())\n}\n
Run Code Online (Sandbox Code Playgroud)\n

之后go mod tidy,go.sum 显示了 go.mod 请求的 logrus v1.8.1 和 prometheus v0.4.0 的依赖项 1.2.0;go list -m all仅显示 v1.8.1。

\n

总和 …

dependencies go dependency-management go-modules

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