如何在加载屏幕上使用铁路由器调试meteor / cordova app?

时间:2014-11-12 21:49:08

标签: android cordova meteor

我有一个流星应用程序(BrewsOnTap)在部署为网站时效果很好,但是当通过cordova在Android设备上进行测试时,它会永远停留在加载屏幕上。

Desktop Screenshot

我没有看到任何相关的控制台错误或警告。如果我转到IP,我从它提供应用程序甚至显示正常。该应用程序使用iron-router和waitOn显示加载模板,直到加载初始数据...但显然没有发生。

建议问题可能是什么或下一步调试它?

1 个答案:

答案 0 :(得分:6)

这看起来非常像连接问题。首先要在控制台中尝试:

Router.current().ready()

如果这不返回false那么Tracker或Iron-Router就会发生一些非常有趣的事情,因为它(被动地)给出了主等待列表准备就绪,所以如果它返回{{1}然后还有其他东西阻止页面呈现。

找出等待列表中哪些项目不是true的最佳方法是查看路由器代码,将订阅句柄拉出到全局对象中,并将引用传递给ready回调。

例如,而不是:

waitOn

改为:

waitOn: function() {
    return [Meteor.subscribe('someThings'), Meteor.subscribe('someOtherThings')];
}

这样,您可以在每个订阅的控制台上运行Subs = {}; waitOn: function() { Subs.someThings = Meteor.subscribe('someThings'); Subs.someOtherThings = Meteor.subscribe('someOtherThings'); return [Subs.someThings, Subs.someOtherThings]; } ,以找出阻止您的网页呈现的内容。希望这是一个开始。

然而,虽然我没有完全理解您发布的错误消息,但是它“失败了负载资源”这一事实强烈暗示了一个连接问题,这会阻止订阅数据通过DDP进入您的客户端从而阻止订阅返回Subs.someThings.ready()。我将在“网络”选项卡中查看那里发生了什么(或没有发生)。

道歉,这不是解决方案,但希望这是一个开始。如果是连接,请检查here中的所有内容 - 即启用了开发人员工具,允许USB调试,Android设备连接到同一个wifi,IP正确...

<强>更新 考虑到这一点,应用程序是通过USB调试安装的,所以你可以运行它的事实表明那里没有问题。但是,我假设数据是通过本地网络传递的,这就是问题所在,所以我认为必须是这两个设备没有连接到同一个wifi,否则提供的IP不正确。