【问题标题】:Exception in delivering result of invoking method调用方法的结果传递异常
【发布时间】:2015-03-09 14:10:16
【问题描述】:

我一直在使用流星测试 http 调用,我使用了 nitrous(因为我在周末无法访问我的开发笔记本电脑)并且它运行良好。 但是当我尝试从本地电脑运行时,它会返回:

传递调用“getMatch”的结果时出现异常:TypeError: 无法读取未定义的属性“持续时间”。

任何想法可能是什么原因? 方法定义:

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 必须是未定义的,即方法返回未定义。如果将console.log(JSON.stringify(matchResponse.data)) 添加到您的方法中,您会得到什么?
  • 该方法似乎永远不会被调用(console.log 没有出现)。我从一个包中声明了该方法,也许是这个问题?奇怪的是它在亚硝酸盐上运行良好
  • 您是否检查了服务器日志以及客户端日志?

标签: meteor nitrousio


【解决方案1】:

找到了解决办法,我换了位置

Meteor.methods({
    'getMatch': function(){
        return Dota.getMatch();
    }
})

到 server/server.js(我在 packages/dota/dota.js 中有它),现在它可以工作了!感谢@user3374348 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多