去建立事件未定义

Environment: Windows 10 Professional 64-Bit.

I want to build / install a go-project (twitterbeat as you can see).

C:\apps\Go_workspace\src\github.com\buehler\twitterbeat>go build
# github.com/buehler/twitterbeat/beater
beater\twitterbeat.go:62: b.Events undefined (type *beat.Beat has no field or method Events)

Here you can see line 62 of the file:

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
}

I don't think that the code is wrong, because I donwloaded it directly from Github.

Because I am not on a linux / unix system (and I had problems with the proxy), i couldn't run "glide". Instead I donwloaded all dependencies by myself.

What can I do to build twitterbeat?

When you download the dependencies by hand, you need to make sure that they are the same version as in the glide.yaml file. The current version of beat.Beat in github.com/elastic/libbeat/beat/beat.go is newer than the one in the glide.yaml and doesn't have an Events field any more.

It's not your problem,but a fault of the library you are using.

As the code shows,it used github.com/elastic/beats/libbeat/beat,then we jump to the source of beat,the Beat struct is:

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
}

It doesn't have Events field anymore!

You can use the old version of the library github.com/elastic/beats/libbeat/beat,or you can push a issue to the owner of github.com/buehler/twitterbeat to inform him to fix this bug.