模块声明为 X 但被要求为 Y

Module declared as X but was required as Y

我正在尝试在我的模块中使用 grafana/grafana/pkg/tsdb 包。我不认为这个问题是 grafana 特有的,但它是这样的:

$ go get -u github.com/grafana/grafana/pkg/tsdb
go: finding github.com/inconshreveable/log15 latest
go: finding github.com/go-macaron/session latest
go: finding golang.org/x/oauth2 latest
go: finding github.com/teris-io/shortid latest
go: github.com/grafana/grafana/pkg/tsdb imports
        github.com/go-xorm/core: github.com/go-xorm/core@v0.6.3: parsing go.mod:
        module declares its path as: xorm.io/core
                but was required as: github.com/go-xorm/core

它说包 tsdb 正在将 xorm 作为 github.com/go-xorm/core 导入,但模块将自己声明为 xorm.io/core.

查看 Grafana 的 go.mod file, it's using github.com/go-xorm/core and going to github.com/go-xorm/core, it says the project is now archived... and it's go.mod 文件确实将自己声明为 xorm.io/core...

关于如何解决这个问题的建议?

编辑:我也很幸运,只是使用了一个稍旧的版本:

go get github.com/grafana/grafana/pkg/tsdb@6.6.1

我尝试了一个替换,它有时可以工作:

module foo

replace github.com/go-xorm/core => xorm.io/core v0.6.2

go 1.13

require (
...

但是我收到类型错误。

幸运的是,似乎有一个 PR 可以解决这个问题:https://github.com/grafana/grafana/pull/22376