使用 VGO 和 go.mod 找不到 Go 模块
Go modules are not found using VGO and go.mod
我正在使用版本化的 Go 命令来管理我的供应商,一切正常,但是当我 运行 go build
它找不到我的本地包时
我已经在 go.mod
中设置了模块根目录,但仍然出现错误
build foo: cannot find module for path
项目架构如下
foo/
|__src/github.com/username/package1/package1.go
|__src/github.com/username/package2/package2.go
|__src/github.com/username/package3/package3.go
|__main.go
|__go.mod
|__go.sum
所以我的go.mod
看起来像
module foo
require (
...
)
我关注了 https://research.swtch.com/vgo-tour 但我不明白为什么这不起作用。
我的 Go 版本是 1.11
,foo
文件夹在我的 GOPATH
里面,当我在 GOPATH
之外尝试时,这甚至不起作用。
我唯一让它工作的一次是做
module github.com/username/package1
require (
...
)
但找不到其他 2 个包,我得到与上述相同的错误。
我是不是遗漏了什么或者我提供的模块路径是否必须更改?
我假设你导入的本地包是错误的,按照我的例子。
有我的 go.mod
(在 GOPATH
之外,例如我导入了 mux
):
module example
require github.com/gorilla/mux v1.6.2 // indirect
顺便说一句,您可以创建一个空 go.mod
,go
会为您找到并更新您的 go.mod
。
main.go
:
package main
import (
_ "example/src/foo" // local package
"fmt"
_ "github.com/gorilla/mux" // example import
)
func main() {
fmt.Println("foo")
}
foo
本地包:
package foo
import "fmt"
func bar() {
fmt.Println("foo")
}
模块树:
├── go.mod
├── go.sum
├── main.go
└── src
└── foo
└── foo.go
您可以在此处找到更多解释 Modules
我正在使用版本化的 Go 命令来管理我的供应商,一切正常,但是当我 运行 go build
它找不到我的本地包时
我已经在 go.mod
中设置了模块根目录,但仍然出现错误
build foo: cannot find module for path
项目架构如下
foo/
|__src/github.com/username/package1/package1.go
|__src/github.com/username/package2/package2.go
|__src/github.com/username/package3/package3.go
|__main.go
|__go.mod
|__go.sum
所以我的go.mod
看起来像
module foo
require (
...
)
我关注了 https://research.swtch.com/vgo-tour 但我不明白为什么这不起作用。
我的 Go 版本是 1.11
,foo
文件夹在我的 GOPATH
里面,当我在 GOPATH
之外尝试时,这甚至不起作用。
我唯一让它工作的一次是做
module github.com/username/package1
require (
...
)
但找不到其他 2 个包,我得到与上述相同的错误。
我是不是遗漏了什么或者我提供的模块路径是否必须更改?
我假设你导入的本地包是错误的,按照我的例子。
有我的 go.mod
(在 GOPATH
之外,例如我导入了 mux
):
module example
require github.com/gorilla/mux v1.6.2 // indirect
顺便说一句,您可以创建一个空 go.mod
,go
会为您找到并更新您的 go.mod
。
main.go
:
package main
import (
_ "example/src/foo" // local package
"fmt"
_ "github.com/gorilla/mux" // example import
)
func main() {
fmt.Println("foo")
}
foo
本地包:
package foo
import "fmt"
func bar() {
fmt.Println("foo")
}
模块树:
├── go.mod
├── go.sum
├── main.go
└── src
└── foo
└── foo.go
您可以在此处找到更多解释 Modules