环境:Windows 10 Professional 64-Bit。
我想构建/安装一个go-project(如您所见,twitterbeat)。
C:appsGo_workspacesrcgithub.combuehlertwitterbeat>go build
# github.com/buehler/twitterbeat/beater
beatertwitterbeat.go:62: b.Events undefined (type *beat.Beat has no field or method Events)
在这里,您可以看到该文件的第 62 行:
func (bt *Twitterbeat) Setup(b *beat.Beat) error {
logp.Info("Setup waitduration and api keys")
bt.events = b.Events
var err error
bt.period, err = time.ParseDuration(*bt.beatConfig.Period)
if err != nil {
return err
}
anaconda.SetConsumerKey(*bt.beatConfig.Twitter.ConsumerKey)
anaconda.SetConsumerSecret(*bt.beatConfig.Twitter.ConsumerSecret)
bt.api = anaconda.NewTwitterApi(*bt.beatConfig.Twitter.AccessKey, *bt.beatConfig.Twitter.AccessSecret)
return nil
}
我不认为代码是错误的,因为我没有直接从Github加载它。
因为我不在 linux/unix 系统上(而且我在代理上遇到了问题),所以我无法运行"glide"。相反,我自己加载了所有依赖项。
我能做些什么来构建 twitterbeat?
手动下载依赖项时,需要确保它们与 glide.yaml 文件中的版本相同。 github.com/elastic/libbeat/beat/beat.go
中 beat.Beat
的当前版本比 glide.yaml 中的版本更新,并且不再具有Events
字段。
这不是你的问题,而是你正在使用的库的错误。
如代码所示,它使用了github.com/elastic/beats/libbeat/beat
,然后我们跳转到beat
的源头,Beat
结构为:
type Beat struct {
Name string // Beat name.
Version string // Beat version number. Defaults to the libbeat version when an implementation does not set a version.
UUID uuid.UUID // ID assigned to a Beat instance.
BT Beater // Beater implementation.
RawConfig *common.Config // Raw config that can be unpacked to get Beat specific config data.
Config BeatConfig // Common Beat configuration data.
Publisher *publisher.Publisher // Publisher
filters *filter.FilterList // Filters
}
它不再有Events
领域了!
您可以使用旧版本的库github.com/elastic/beats/libbeat/beat
,也可以将问题推送给github.com/buehler/twitterbeat
的所有者,以通知他修复此错误。