我想使用Godebug逐步完成我的程序。但是因为我正在使用net / http,所以会出现以下错误:
/home/heath/go/src/net/http/h2_bundle.go:45:2: could not import golang_org/x/net/http2/hpack (cannot find package "golang_org/x/net/http2/hpack" in any of:
/home/heath/go/src/golang_org/x/net/http2/hpack (from $GOROOT)
/ x / net / http2 / hpack确实存在于我的GOPATH中,但在~heath / go / src / golang.org中......不是golang_org(不确定那里发生了什么)
我已经读过这个错误,因为godebug还不支持http2(找不到源代码)。
我试图通过在init()和命令行中设置GODEBUG env来禁用http2server和http2client。我还确认通过执行fmt.Println(“GODEBUG”,os.Getenv(“GODEBUG”)来设置这些设置。根据位于here的说明
GODEBUG=http2client=0 # disable HTTP/2 client support
GODEBUG=http2server=0 # disable HTTP/2 server support
我复制错误的简单代码示例是:
package main
import "fmt"
import "net/http"
import "os"
func init() {
os.Setenv("GODEBUG", "http2server=0,http2client=0")
}
func main() {
fmt.Println("GODEBUG", os.Getenv("GODEBUG"))
_ = "breakpoint"
fmt.Println("Hello, World!")
http.ListenAndServe(":8080", nil)
}
godebug run example.go
我正在运行Go版本:
go go go7.7 linux / amd64
答案 0 :(得分:0)
这可能不是正确的做事方式。但我将http2包从$ GOROOT / src / vendor下的供应商目录复制到我的$ GOPATH / src下的src目录。
如果有人对参考供应商目录的正确方法有任何进一步的意见,请添加您的想法。只需将我的解决方法放在这里以防其他人遇到同样的问题。
编辑:实际上一个'更好'的方法是做一个ln -s ..src / vender / github_org来... / src / github_org