Android 如何调试流星/科尔多瓦应用程序使用铁路由器卡在加载屏幕?

Android 如何调试流星/科尔多瓦应用程序使用铁路由器卡在加载屏幕?,android,cordova,meteor,Android,Cordova,Meteor,我有一个meteor应用程序(),当作为网站部署时运行良好,但是当通过cordova在Android设备上测试时,它会永远停留在加载屏幕上 我没有看到任何相关的控制台错误或警告。如果我转到我正在为应用程序提供服务的IP,它甚至会显示良好。应用程序正在使用iron router和waitOn显示加载模板,直到加载初始数据。。。但显然,这并没有发生 关于问题可能是什么或下一步调试的建议?这看起来很像一个连接问题。要在控制台中尝试的第一件事: Router.current().ready() 如果

我有一个meteor应用程序(),当作为网站部署时运行良好,但是当通过cordova在Android设备上测试时,它会永远停留在加载屏幕上

我没有看到任何相关的控制台错误或警告。如果我转到我正在为应用程序提供服务的IP,它甚至会显示良好。应用程序正在使用iron router和waitOn显示加载模板,直到加载初始数据。。。但显然,这并没有发生


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

这看起来很像一个连接问题。要在控制台中尝试的第一件事:

Router.current().ready()
如果它没有返回
false
,那么跟踪器或Iron Router会发生一些非常有趣的事情,因为它(反应性地)提供了主等待列表就绪状态,因此如果它返回
true
,那么还有其他东西阻止页面呈现

找出等待列表中哪些项未准备就绪的最佳方法是检查路由器代码,将订阅句柄拉入全局对象,并将引用传递给
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];
}
这样,您就可以在每个订阅的控制台上运行
Subs.someThings.ready()
,找出阻止页面呈现的原因。希望这是一个开始

然而,虽然我不完全理解您发布的错误消息,但它“加载资源失败”这一事实强烈表明存在连接问题,这将阻止订阅数据通过DDP发送到您的客户端,从而阻止订阅返回
就绪
。我会查看一下网络选项卡,看看那里发生了什么(或没有发生什么)

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

更新:
再想一想,这个应用程序是通过USB调试安装的,所以你完全可以运行它,这表明它没有问题。但是,我假设数据通过本地网络传输,这就是问题所在,因此我认为这两个设备一定没有连接到同一个wifi,否则提供的IP不正确。

这不是解决方案,但肯定是问题的答案。万分感谢!谢谢你的帮助,我终于明白了。。。你提示设备没有连接到同一个WiFi,这让我想到了。。。你的回答对我的问题仍然是正确的。。。但是对于任何一个坚持这一点的人,特别是如果你在虚拟机中运行meteor。。。请看我的回答: