2017-11-30 3 views
1

내가이 페이지 https://www.mbta.com/developers/gtfs-realtime사용하여 노드 실시간 결합 GTFS는

나는 새 프로젝트 폴더에 종속성을 추가에 피드 URL의 어떤을 사용하고 싶습니다 피드. 다음 파일이 나는 다음과 같은 오류 메시지가 때를 받고 계속, 그러나 ... https://github.com/google/gtfs-realtime-bindings/tree/master/nodejs

그래서 내 app.js 파일이처럼 보이는 GitHub의 프로젝트 페이지에서 코드와

var GtfsRealtimeBindings = require('gtfs-realtime-bindings'); 
var request = require('request'); 

var requestSettings = { 
    method: 'GET', 
    url: 'http://developer.mbta.com/lib/GTRTFS/Alerts/TripUpdates.pb', 
    encoding: null 
}; 
request(requestSettings, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var feed = GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body); 
     feed.entity.forEach(function (entity) { 
      if (entity.trip_update) { 
       console.log(entity.trip_update); 
      } 
     }); 
    } 
}); 

을 app.js 생성 'node app.js'를 입력하십시오

TypeError: Cannot read property 'FeedMessage' of undefined 
    at Request._callback (C:\wamp64\www\dev\gtfs\app.js:11:57) 
    at Request.self.callback (C:\wamp64\www\dev\gtfs\node_modules\request\request.js:186:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (C:\wamp64\www\dev\gtfs\node_modules\request\request.js:1163:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (C:\wamp64\www\dev\gtfs\node_modules\request\request.js:1085:12) 
    at IncomingMessage.g (events.js:291:16) 
    at emitNone (events.js:91:20) 

여기에 누락 된 내용이나 잘못된 정보에 대한 단서가 있습니까?

또한 "gtfs-realtime.proto"파일의 용도는 무엇입니까? 프로젝트 폴더에 프로젝트를 포함할지 여부 https://developers.google.com/transit/gtfs-realtime/gtfs-realtime-proto

감사합니다. 귀하의 도움에 감사 드리며, 이것은 처음 gtfs 피드를 파싱합니다.

답변

1

해당 페이지의 예제 코드가 잘못되었습니다.

var feed = GtfsRealtimeBindings.FeedMessage.decode(body); 

var feed = GtfsRealtimeBindings.transit_realtime.FeedMessage.decode(body); 

교체하고 예상대로 코드가 작동합니다.

gtfs-realtime.proto 파일은 GTFS 실시간 메시지의 형식과 압축 된 이진 프로토콜 메시지로 인코딩되는 방법을 설명합니다. protobuf (gtfs-realtime-bindings)를 읽는 데 사용하는 노드 패키지가 protobuf의 디코딩을 이미 처리하므로 proto 파일을 직접 포함 할 필요가 없습니다.

관련 문제