Javascript 无法读取属性';解码';未定义的

Javascript 无法读取属性';解码';未定义的,javascript,protocol-buffers,gtfs,Javascript,Protocol Buffers,Gtfs,我一直在玩弄通用的传输源规范-实时,我完全遵循谷歌文档中给出的示例: 对于JavaScript,使用我的cities local transit提要时,我不断遇到以下错误: var feed = GtfsRealtimeBindings.FeedMessage.decode(body); ^ TypeError: Cannot read property 'decode' of undefined 我有一

我一直在玩弄通用的传输源规范-实时,我完全遵循谷歌文档中给出的示例:

对于JavaScript,使用我的cities local transit提要时,我不断遇到以下错误:

var feed = GtfsRealtimeBindings.FeedMessage.decode(body);
                                            ^
TypeError: Cannot read property 'decode' of undefined
我有一个python的工作实现,它遵循了他们的示例,因此我可以确定地验证提要的格式是否正确

我正在使用以下指令运行代码:

node index.js
mypackage.json包含所有相关的依赖项,我已经使用npm安装了所需的包。
我已经到处寻找这个错误的解决方案,但没有运气。有什么建议吗?

查看GitHub上的当前示例代码 () 您似乎缺少了
transit\u realtime

GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body);

在这个示例中,有一个指向Javascript语言绑定的github的链接。github示例与文档示例不同。我认为文件已经过时了

google文档示例中的行

var feed=GtfsRealtimeBindings.FeedMessage.decode(正文)

应该是
var feed=GtfsRealtimeBindings.transit\u realtime.FeedMessage.decode(正文)注意包含的
.transit\u realtime

或者,这可以用以下行表示:

var GtfsRealtimeBindings=require('gtfs-realtime-bindings')

as
var GtfsRealtimeBindings=require('gtfs-realtime-bindings')。transit_realtime


超出该行的google文档示例代码将保持原样。

您需要通过引用transit_realtime属性导入gtfs实时绑定。这是对旧protobuf.js绑定生成器的更改,但这是为了分离名称空间

这行不通

cont GtfsRealtimeBindings = require('gtfs-realtime-bindings');
它将:

const GtfsRealtimeBindings = require('gtfs-realtime-bindings').transit_realtime;
现在,您可以获取feedMessage并对其进行解码

const { FeedMessage, FeedHeader, FeedEntity, VehiclePosition } = GtfsRealtimeBindings;