gpt4 book ai didi

cordova - 如何防止 Meteor/Cordova 应用程序连接到 10.0.2.2? (为什么应用程序会连接到那里?)

转载 作者:行者123 更新时间:2023-12-04 20:01:43 25 4
gpt4 key购买 nike

我有一个 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') .这被调用,所以我知道覆盖是成功的,当我 grep 整个构建的 .apk 文件 10.0.2.2 不再被找到 - 行为仍然相同。

任何想法发生了什么以及该怎么做?

最佳答案

因此,即使您设置了 ROOT_URL正确的是,它的移动版本仍然有特殊变量没有设置并且可能包含 localhost .并且在meteor 项目中似乎存在更多的代码片段来替代localhost10.0.2.2除了我上面提到的那个,当 Cordova 客户端连接时。所以这似乎导致我的应用程序重新连接到 10.0.2.2。

我能找到的移动 URL 变量是process.env.MOBILE_ROOT_URLprocess.env.MOBILE_DDP_URL .所以在 Meteor.startup()功能我现在将这些设置为我的真实 ROOT_URL在服务器端。我的 Android (Cordova) 应用程序现在仍然在第一次启动后几秒钟重新连接,但它重新连接到相同的(和真实的)服务器 URL(因此一切正常)!

我仍然不知道为什么它会重新连接,那些移动变量及其使用似乎没有得到很好的记录(或者我错过了一些东西),但我可以接受现在的工作方式。

关于cordova - 如何防止 Meteor/Cordova 应用程序连接到 10.0.2.2? (为什么应用程序会连接到那里?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com