去构建未定义的事件



环境: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.gobeat.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的所有者,以通知他修复此错误。

最新更新