无法读取未定义的 属性 'decode'
Cannot read property 'decode' of undefined
我一直在研究通用交通信息流规范 - 实时,并且我完全遵循 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 安装了所需的包。
我已经广泛搜索了这个错误的解决方案,但没有运气。有什么建议吗?
查看 GitHub 上的当前示例代码
(https://github.com/MobilityData/gtfs-realtime-bindings/tree/master/nodejs#example-code)
看来你在中间缺少 transit_realtime
:
GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body);
示例中有一个 link 到 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 文档示例代码将保持原样。
您需要通过引用 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;
我一直在研究通用交通信息流规范 - 实时,并且我完全遵循 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 安装了所需的包。 我已经广泛搜索了这个错误的解决方案,但没有运气。有什么建议吗?
查看 GitHub 上的当前示例代码
(https://github.com/MobilityData/gtfs-realtime-bindings/tree/master/nodejs#example-code)
看来你在中间缺少 transit_realtime
:
GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body);
示例中有一个 link 到 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 文档示例代码将保持原样。
您需要通过引用 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;