Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova Meteor应用程序仅在设备上调用10.0.2.2:3000,而不考虑process.env设置_Cordova_Meteor_Build_Apk - Fatal编程技术网

Cordova Meteor应用程序仅在设备上调用10.0.2.2:3000,而不考虑process.env设置

Cordova Meteor应用程序仅在设备上调用10.0.2.2:3000,而不考虑process.env设置,cordova,meteor,build,apk,Cordova,Meteor,Build,Apk,我已经在这个应用程序上工作了8个月,现在已经快结束了,除了这个ip地址问题。我无法阻止我的应用程序在Android设备上调用10.0.2.2:3000,即使在执行了其他有同样问题的人的建议之后。我不知道还能尝试什么。我应该提到的一点是,使用浏览器,我可以毫无问题地连接到服务器并运行应用程序 在服务器端,我设置了以下环境变量: 流星启动(()=>{ var ROOT_URL='' } 接下来我跑: -mupx设置 -mupx部署 mup.json设置为: “环境”:{ “根URL”:“” }, “

我已经在这个应用程序上工作了8个月,现在已经快结束了,除了这个ip地址问题。我无法阻止我的应用程序在Android设备上调用10.0.2.2:3000,即使在执行了其他有同样问题的人的建议之后。我不知道还能尝试什么。我应该提到的一点是,使用浏览器,我可以毫无问题地连接到服务器并运行应用程序

在服务器端,我设置了以下环境变量: 流星启动(()=>{
var ROOT_URL=''

}

接下来我跑:
-mupx设置
-mupx部署

mup.json设置为:
“环境”:{
“根URL”:“”
},
“ssl”:{
“证书”:“/.deploy/bundle.crt”,
“密钥”:“/.deploy/privkey.pem”,
“端口”:443
},

然后我使用:
-meteor构建../myAppProduction--服务器

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

我真的很感激你能帮我做这件事。我已经做了三天了,运气不好


谢谢,Mark

如果您在流星源上搜索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 } 16:if(/Android/i.test(navigator.userAgent)){ 17//模拟Android应用程序时,它无法连接到本地主机, 18://它应该连接到10.0.2.2 19/(除非我们使用的是http代理,否则它可以工作!) 20如果(!\uuuuuuuuuuuuuuuuuuuMeteor\uuuRuntime\uuuuuuConfig\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu{ 21:uuuMeteor运行时配置根URL=(uuuMeteor运行时配置根URL。)替换(/localhost/i,'10.0.2.2'); 22:uuuMeteor_uuRuntime_uuConfig.DDP_DEFAULT_CONNECTION_URL=(uuuuMeteor_runtime_config.DDP_DEFAULT_CONNECTION_URL.)。替换(/localhost/i,'10.0.2.2'); 23 } 24 } IP地址10.0.2.2是meteor/android应用程序中编程的修复程序

在我的网站上,只有在使用“localhost”作为根URL的标识符时才会发生这种情况(如源代码中所定义的)。所以我将其替换为“127.0.0.1”

也许这对你也有帮助


Tom

找到了答案。我曾经运行过meteor--生产,它与ssl一起工作。

谢谢Tom,我现在正在尝试。我发现Cordova代码中引用了10.0.2.2的大约60个地方,我进行了全局替换。我尝试过编辑Cordova索引文件,但当meteor build运行时,它会被重建和替换。我还尝试过使用apktool,没有成功。似乎其他人已经成功添加了process.env.ROOT\u URL=ROOT\u URL;process.env.MOBILE\u ROOT\u URL=ROOT\u URL;process.env.MOBILE\u DDP\u URL=ROOT\u URL;在Google Play Store上启动meteor应用程序的人可以分享他们的部署过程和他们对环境变量的使用吗?谢谢,MarkI删除了SSL并使其工作。仍然不确定问题出在哪里。 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 }