我能够完成设置和安装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的设置令人困惑。
关于如何调试此问题的任何建议?
答案 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
)