我有一个在本地服务器上运行的 Meteor 应用程序进行开发(http://10.0.2.10:3000)。ROOT_URL
设置正确,因此等__meteor_runtime_config__.ROOT_URL
于此 URL。当然,该应用程序在 10.0.2.0/24 内的客户端计算机上的浏览器中运行良好。该应用程序在我的 android 手机上的移动 chrome/firefox 上也可以正常工作,这也是 10.0.2.0/24 的一部分。但是,当我尝试在此手机上将其作为应用程序运行时,meteor run android-device --mobile-server http://10.0.2.10:3000/
会发生一些奇怪的事情:
当应用程序第一次启动时(或在我清除所有应用程序数据后第一次启动)它会像它应该的那样工作(加载数据库中的内容)几秒钟。然后应用程序重新加载,并且不再加载数据库中的任何远程内容。我添加了以下函数来查看 Meteor 尝试连接的位置:
Meteor.startup(function(){
console.log(__meteor_runtime_config__.ROOT_URL);
})
第一次加载远程内容时,它会返回http://10.0.2.10:3000/,就像我期望的那样。第二次未加载远程内容时,它返回http://10.0.2.2:3000/。
现在的问题是,为什么 Meteor/Cordova 会这样做,我该如何阻止这种行为?因为显然我不能以这种方式测试应用程序。我还不确定当我有 FQDN 和 HTTPS 代理时它是否可以在生产中工作,但这已经超出了重点。
我试图找到 10.0.2.2,因为我的 LAN 中没有任何东西在那里运行,我没有在任何地方指定这个 IP,发现它/cordova-build/www/application/index.html
似乎是从其中生成的boilerplate_web.cordova.html
(请参阅此链接https://searchcode.com/codesearch/view/91819963 /)。但是 Meteor 提供了用文件夹覆盖这些生成的文件的可能性cordova-build-override
,所以我确实删除了整个文件
if (/Android/i.test(navigator.userAgent)) {
//[...]
}
块并添加了一个简短的console.log('removed')
. 这被调用了,所以我知道覆盖是成功的,当我通过整个构建的 .apk 文件 10.0.2.2 进行 grep 时,不再找到 - 行为仍然相同。
任何想法发生了什么,该怎么做?