缺少 PromQL 模块

我正在尝试在这里使用 promql 包


package main


import (

    "fmt"    

    "github.com/prometheus/prometheus/promql/parser"

)


func main() {

    fmt.Println("Hello")

    parser.ParseExpr("foobar")    

}

导入时遇到问题。这是错误:


没有必需的模块提供包 github.com/prometheus/prometheus/promql/parser;添加它:去获取 github.com/prometheus/prometheus/promql/parser(编译)


我尝试go get github.com/prometheus/prometheus/promql/parser按照建议运行,但失败了。


去获取:找到模块 github.com/prometheus/prometheus@upgrade (v2.5.0+incompatible),但不包含包 github.com/prometheus/prometheus/promql/parser


这是我go.mod目前的:


module foo.com/bar/parser


go 1.17


require github.com/prometheus/prometheus v2.5.0+incompatible // indirect


MMMHUHU
浏览 139回答 1
1回答

九州编程

使用go get github.com/prometheus/prometheus@83032011a5d3e6102624fe58241a374a7201fee8(该提交是此时的最新版本,v2.33.4)需要这样做的原因是这是 Go 模块的一个已知问题。Prometheus 的语义版本控制将 Prometheus 的行为版本化为服务器,而不是将其代码作为库。通过将模块路径更改为 v2,我们建议 Prometheus 作为库遵守 Go Modules 的契约,但事实并非如此,即即使在次要版本中也有许多重大变化。和:Prometheus 不打算用作图书馆。现在情况发生了变化,即使我们不接受所有通用贡献,它也打算照原样使用。您看到的错误是因为默认情况下go get抓取旧版本v2.5.0,该版本于 2018 年发布并且不包含该parser软件包。发生这种情况是因为 Prometheus 使用的版本控制方案与 Go 假设的不一致。有关其他信息,请参阅此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go