【问题标题】:Cannot read property 'decode' of undefined无法读取未定义的属性“解码”
【发布时间】:2019-07-24 12:05:21
【问题描述】:

我一直在玩通用运输提要规范 - 实时,我完全按照 google 文档中给出的示例:

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 安装了所需的包。 我已经广泛搜索了这个错误的解决方案,但没有运气。有什么建议吗?

【问题讨论】:

    标签: javascript protocol-buffers gtfs


    【解决方案1】:

    在 GitHub 上查看当前示例代码 (https://github.com/MobilityData/gtfs-realtime-bindings/tree/master/nodejs#example-code) 看来您在两者之间缺少transit_realtime

    GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body);
    

    【讨论】:

      【解决方案2】:

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

      google 文档示例中的行

      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;

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

      【讨论】:

        【解决方案3】:

        您需要通过引用 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-11-29
          • 1970-01-01
          • 2021-12-04
          • 2020-12-26
          • 1970-01-01
          • 1970-01-01
          • 2020-04-06
          • 2021-05-10
          • 2020-10-30
          相关资源
          最近更新 更多