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

Posted

技术标签:

【中文标题】如何使用卡在加载屏幕上的铁路由器调试流星/科尔多瓦应用程序?【英文标题】:how to debug a meteor / cordova app using iron-router stuck at loading screen? 【发布时间】:2015-01-09 21:56:12 【问题描述】:

我有一个流星应用程序 (BrewsOnTap),在部署为网站时运行良好,但在通过 cordova 在 android 设备上进行测试时,它会永远卡在加载屏幕上。

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

关于问题可能是什么或调试它的后续步骤的建议?

【问题讨论】:

【参考方案1】:

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

Router.current().ready()

如果这没有返回false,那么Tracker 或Iron-Router 会发生一些非常有趣的事情,因为它(反应性地)让主等待列表准备就绪,所以如果它返回true,那么就会有阻止页面呈现的其他因素。

找出等待列表中哪些项目不是ready 的最佳方法是检查您的路由器代码,将订阅句柄提取到全局对象中,然后传递对@987654327 的引用@回调。

例如,而不是:

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 到达您的客户端从而防止订阅返回ready。我会查看“网络”选项卡,看看那里发生了什么(或没有做什么)。

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

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

【讨论】:

这不是一个解决方案,但它绝对是问题的答案。谢谢一百万! 感谢您的帮助,我最终弄明白了……您对设备未连接到同一个 WiFi 的提示将我带到了那里……您的回答对于我的问题仍然是正确的。 ..但是对于任何坚持这一点的人,特别是如果你在虚拟机中运行流星......请在此处查看我的答案:***.com/questions/26918902/…

以上是关于如何使用卡在加载屏幕上的铁路由器调试流星/科尔多瓦应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

React native 卡在从 localhost 加载:使用 USB 调试器在物理设备上的 8081

如何在 IOS 的流星科尔多瓦应用程序中使用谷歌地图

反应,流星,webpack,es6。如何创建加载/启动屏幕

无法构建科尔多瓦流星应用程序(错误:ENOENT)

在流星科尔多瓦应用程序中的 iOS 9 上全局禁用放大镜

如何检测屏幕截图事件并在科尔多瓦中停止它