使用GO111MODULE = on安装augustoroman / v8时遇到问题

时间:2019-05-18 21:34:50

标签: go

我能够完成设置和安装github.com/augustoroman/v8的整个过程-我手动建立了V8依赖项。当我运行go test时,会得到以下结果:

PASS
ok      github.com/augustoroman/v8  9.433s

我将软件包安装在$GOPATH/src/github.com/augustoroman/v8上。到目前为止,一切似乎在OS X上都运行良好。但是,当我尝试在自己的单独项目中使用import "github.com/augustoroman/v8"进行导入时,我会抱怨。

回想起来,我意识到我已启用GO111MODULE=on。这促使我在v8文件夹的根目录中添加带有以下内容的go.mod:

module github.com/augustoroman/v8
go 1.12

当我尝试运行时,出现另一个错误:

go: finding github.com/augustoroman/v8 latest
go: downloading github.com/augustoroman/v8 v8.0.0-20190418063024-4b66934a28a7
main.go:3:8: unknown import path "github.com/augustoroman/v8": cannot find module providing package github.com/augustoroman/v8

基本上,该软件包似乎可以正常工作,但是GO111MODULE设置将其弄乱了,或者我将软件包安装在错误的位置。在Go已经很严格的设置/结构的基础上,GO111MODULE的设置令人困惑。

关于如何调试此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

设置GO111MODULE=on后,Go不会使用GOPATH/src软件包,而它将使用$GOPATH/pkg/mod(参考,official blog

因此,无法在$GOPATH/src/github.com/augustoroman/v8中安装更改的软件包。

作为一种解决方法,您可以在go.mod文件中使用 replace 指令,该文件需要此经过修改的程序包。

例如,如果您在github.com/augustoroman/v8项目中使用example.com/me/hello,则在replace的{​​{1}}文件中使用go.mod

它可以是磁盘上的绝对位置或相对位置,

example.com/me/hello

或者甚至更好(更惯用!),您在github中的fork库。

module example.com/me/hello

require (
  github.com/me/some-repo v0.0.0
)

replace (
    github.com/augustoroman/v8 => /absolute/gopath/src/github.com/augustoroman/v8
)