为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2021-08-20 16:24:15
我一直在玩通用运输提要规范 - 实时,并且我完全遵循谷歌文档中给出的示例: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;

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


查看完整回答
反对 回复 2021-08-20
?
喵喵时光机

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;


查看完整回答
反对 回复 2021-08-20
  • 3 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信