无法读取未定义的属性“解码”

我一直在玩通用运输提要规范 - 实时,并且我完全遵循谷歌文档中给出的示例:


https://developers.google.com/transit/gtfs-realtime/examples/nodejs-sample


对于 JavaScript,使用我所在城市的本地交通提要,但是我一直遇到以下错误:


var feed = GtfsRealtimeBindings.FeedMessage.decode(body);

                                            ^

TypeError: Cannot read property 'decode' of undefined

我在 python 中有一个工作实现,它遵循他们的例子,所以我可以肯定地验证提要是正确的格式。


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


node index.js

我的 package.json 包含所有相关的依赖项,并且我已经使用 npm 安装了所需的包。我已经广泛搜索此错误的解决方案,但没有运气。有什么建议吗?


开满天机
浏览 217回答 3
3回答

森林海

在示例中,有一个指向 Javascript 语言绑定的 github 的链接。github 示例与文档示例不同。我认为文档已经过时了。谷歌文档示例中的行var feed = GtfsRealtimeBindings.FeedMessage.decode(body);应var feed = GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body);注意包含.transit_realtime.或者,这可以用以下行表示:var GtfsRealtimeBindings = require('gtfs-realtime-bindings');作为 var GtfsRealtimeBindings = require('gtfs-realtime-bindings').transit_realtime;超出该行的谷歌文档示例代码将保持原样。

喵喵时光机

您需要通过引用transit_realtime 属性来导入gtfs-realtime-bindings。这是对旧的 protobuf.js 绑定生成器的更改,但这样做是为了分离命名空间。它不会工作cont GtfsRealtimeBindings = require('gtfs-realtime-bindings');它会:const GtfsRealtimeBindings = require('gtfs-realtime-bindings').transit_realtime;现在您可以获取 feedMessage 并对其进行解码。const { FeedMessage, FeedHeader, FeedEntity, VehiclePosition } = GtfsRealtimeBindings;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript