Meteor android构建版本

时间:2015-08-28 21:18:10

标签: meteor meteoric

我有一个奇怪的问题。我构建我的Meteor应用程序并使用 -

在Android设备上运行它
meteor run android-device --mobile-server=<my_aws_ip>:3000

当应用程序立即部署时,它连接到服务器(我的javascripts等工作)。几秒钟后,页面刷新,没有任何javascript回调工作。请帮我调试这个问题。

更多信息:如果我更改客户端(而不是服务器)并在最初几秒内部署它,则会在手机上显示更改后的客户端。在最初几秒之后,显示服务器上存在的版本。所以我认为Cordova或Meteor正在尝试从服务器获取客户端代码,这会破坏应用程序。有没有办法防止这种行为?

更多数据点 -

  1. 我的aws代码没有安装android和ios平台。因此,我认为没有安装cordova插件,导致JS崩溃。
  2. 我能想到的最容易修复就是删除cordova autoupdate。这是由流星平台包添加的。如果我克隆meteor-platform并注释掉cordova autoupdate,则该应用程序无法加载。
  3. 是否有其他方法可以删除自动更新?

1 个答案:

答案 0 :(得分:2)

这听起来好像您在mobile-server地址部署了不同版本的应用。

本地代码以开发模式运行。您的AWS可能处于生产模式(可能包含语法错误)。

当您运行应用程序时,它会看到代码不同并使用热代码重新加载来获取新/旧(不同)版本 - 因此页面刷新/闪存。

要解决此问题,您需要在代码中找到语法错​​误。最好查看ADB记录器或使用meteor run --verbose android-device ....

运行

这将提供更多信息,例如Uncaught exception: cannot read .. of null错误类型错误。

很难说出错误是什么。该错误会阻止其余代码执行。在生产模式中,整个项目是一个JS文件。如果文件中间存在​​任何错误,则文件的其余部分将不会执行。

另外,尝试在浏览器中加载<my_aws_ip>:3000并在JS控制台中查看JS错误。

您还可以使用--production在本地运行它,以在本地模拟生产构建环境。

启用自动更新但没有页面刷新:

Reload._reload = function (options) {
    console.log("Next load will load new version");
};