開滿天機
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;
超出該行的谷歌文檔示例代碼將保持原樣。

喵喵時光機
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
提交
取消