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

fun*_*eah 3 android cordova meteor

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

桌面截图

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

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

ric*_*ilv 6

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

Router.current().ready()
Run Code Online (Sandbox Code Playgroud)

如果没有返回,false那么Tracker或Iron-Router就会发生一些非常有趣的事情,因为它(反应性地)给出了主等待列表准备就绪,因此如果它返回,true那么还有一些东西会阻止页面呈现.

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

例如,而不是:

waitOn: function() {
    return [Meteor.subscribe('someThings'), Meteor.subscribe('someOtherThings')];
}
Run Code Online (Sandbox Code Playgroud)

改为:

Subs = {};

waitOn: function() {
    Subs.someThings = Meteor.subscribe('someThings');
    Subs.someOtherThings = Meteor.subscribe('someOtherThings');
    return [Subs.someThings, Subs.someOtherThings];
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以Subs.someThings.ready()从每个订阅的控制台运行,以找出阻止您的页面呈现的内容.希望这是一个开始.

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

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

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