无论process.env设置如何,Meteor app仅在设备上调用10.0.2.2:3000

时间:2016-07-05 21:27:10

标签: cordova meteor build apk

我已经在这个应用程序上工作了8个月并且到了最后,除了这个ip地址问题。我无法阻止我的应用在Android设备上调用10.0.2.2:3000,即使在实施了其他遇到相同问题的建议后也是如此。我不知道还有什么可以尝试。我应该提到的一件事是,使用浏览器我可以毫无问题地连接到服务器并运行应用程序。

在服务器端,我设置了以下环境变量: Meteor.startup(()=> {
    var ROOT_URL =' https://myapp:443';

Meteor.absoluteUrl.defaultOptions.rootUrl = ROOT_URL;
process.env.ROOT_URL = ROOT_URL;
process.env.MOBILE_ROOT_URL = ROOT_URL;
process.env.MOBILE_DDP_URL = ROOT_URL;
process.env.DDP_DEFAULT_CONNECTION_URL = ROOT_URL;

}

接下来我跑了:
- mupx设置
- mupx deploy

mup.json设置为:
  " env":{
    " ROOT_URL":" https://myapp.com:443",
  },
  " ssl":{
    "证书":" ./。deploy / bundle.crt",
    " key":" ./。deploy / privkey.pem",
    " port":443
  },

然后我使用以下方法构建apk:
- meteor build ../myAppProduction --server https://myapp.com:443

到目前为止一切正常。然后我将Meteor构建生成的apk复制到Android设备。安装并运行应用程序。该应用程序尝试连接,但当我检查IP地址时,它尝试连接到设备上它是10.0.2.2:3000。

我真的很感激这方面的一些帮助。我一直在努力工作3天没有运气。

谢谢,Mark

2 个答案:

答案 0 :(得分:0)

如果在流星源上搜索10.0.2.2,则会发现:

   16:    if (/Android/i.test(navigator.userAgent)) {
   17        // When Android app is emulated, it cannot connect to localhost,
   18:       // instead it should connect to 10.0.2.2
   19        // (unless we're using an http proxy; then it works!)
   20        if (!__meteor_runtime_config__.httpProxyPort) {
   21:         __meteor_runtime_config__.ROOT_URL = (__meteor_runtime_config__.ROOT_URL || '').replace(/localhost/i, '10.0.2.2');
   22:         __meteor_runtime_config__.DDP_DEFAULT_CONNECTION_URL = (__meteor_runtime_config__.DDP_DEFAULT_CONNECTION_URL || '').replace(/localhost/i, '10.0.2.2');
   23        }
   24     }

IP地址10.0.2.2是修复编程到meteor / android应用程序的东西。

在我的网站上,当使用“localhost”作为ROOT_URL的标识符时,这只会发生(在源代码中定义)。所以我只用“127.0.0.1”替换它

也许这对你有帮助

汤姆

答案 1 :(得分:-1)

想出来。一旦我运行流星 - 生产它就与ssl一起工作。