Я тестировал на http-звонках с метеор, я использовал азот (потому что у меня не было доступа к моему ноутбуку в выходные дни), и он работал нормально. Но когда я пытался бежать от моего локального ПК возвращается:Исключение при доставке результата вызова метода
Exception in delivering result of invoking 'getMatch': TypeError: Cannot read property 'duration' of undefined.
Любые идеи, что может быть причиной? Определение Метод:
Dota = {};
Dota.getMatch = function() {
if (!Meteor.settings.steamToken)
throw new Meteor.Error(500, 'Enter a valid Steam Token in Meteor.settings');
var matchResponse = Meteor.http.get(
"https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?",
{
params:{
"match_id": "1305454585",
"key": Meteor.settings.steamToken
}
}
);
if (matchResponse.statusCode === 200) {
return matchResponse.data.result
}
else {
throw new Meteor.Error(500, "getMatch failed with error: "+matchResponse.statusCode);
}
}
Meteor.methods({
'getMatch': function(){
return Dota.getMatch();
}
})
Вызов метода:
Meteor.call('getMatch', function(error, result){
var duration = numeral(result.duration).format('00:00:00');
Session.set('duration', duration);
var winner = Meteor.myFunctions.getWinner(result.radiant_win);
Session.set('winner', winner);
});
Template.layout.helpers({
winner: function() {
return Session.get('winner');
},
duration: function() {
return Session.get('duration');
}
});
Единственным местом, где вы получаете доступ к свойству под названием 'duration', является' result.duration' в обратном вызове метода. Поэтому 'result' должен быть неопределенным, т. Е. Метод возвращает undefined. Что вы получите, если добавить свой метод console.log (JSON.stringify (matchResponse.data))? – user3374348
Кажется, что метод никогда не вызван (консоль.log не отображалась). Я объявил, что метод из пакета, может быть, это проблема? странно, что он отлично работает на азоте. – akrz
Проверяли ли вы журналы сервера, а также журналы клиентов? – user3374348