英文:
go build events undefined
问题
环境:Windows 10 专业版 64 位。
我想构建/安装一个 Go 项目(如你所见的 twitterbeat)。
在这里,你可以看到文件的第 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?
英文:
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?
答案1
得分: 0
当您手动下载依赖项时,需要确保它们与glide.yaml文件中的版本相同。github.com/elastic/libbeat/beat/beat.go
中的beat.Beat
当前版本比glide.yaml中的版本更新,并且不再具有Events
字段。
英文:
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.
答案2
得分: 0
这不是你的问题,而是你正在使用的库的错误。
根据代码显示,它使用了github.com/elastic/beats/libbeat/beat
,然后我们跳转到beat
的源代码,Beat
结构体如下:
type Beat struct {
Name string // Beat名称。
Version string // Beat版本号。当实现没有设置版本时,默认为libbeat版本。
UUID uuid.UUID // 分配给Beat实例的ID。
BT Beater // Beater实现。
RawConfig *common.Config // 可以解包以获取Beat特定配置数据的原始配置。
Config BeatConfig // 公共Beat配置数据。
Publisher *publisher.Publisher // 发布者
filters *filter.FilterList // 过滤器
}
它不再有Events
字段了!
你可以使用旧版本的库github.com/elastic/beats/libbeat/beat
,或者你可以向github.com/buehler/twitterbeat
的所有者提交一个问题,告诉他修复这个错误。
英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论