我一直在玩通用运输提要规范 - 实时,并且我完全遵循谷歌文档中给出的示例: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 安装了所需的包。我已经广泛搜索此错误的解决方案,但没有运气。有什么建议吗?
3 回答
森林海
TA贡献2011条经验 获得超2个赞
在示例中,有一个指向 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;
超出该行的谷歌文档示例代码将保持原样。
喵喵时光机
TA贡献1846条经验 获得超7个赞
您需要通过引用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;
添加回答
举报
0/150
提交
取消