【发布时间】:2020-04-08 14:20:50
【问题描述】:
我有一个 Cordova 应用程序在连接到互联网的多台设备上运行良好。
观察到的行为:
但是当我在我们的开发环境虚拟机上部署应用程序时,它只是在初始屏幕上冻结。我注意到的一件奇怪的事情是,每次我启动浏览器时,它都会要求我登录代理服务器。这是因为代理使用我的生产凭据进行身份验证。凭据保存在浏览器中,我只需单击确定。我觉得应用程序无法启动,因为 web 视图正在等待代理登录提示被操作,这在启动时显然是不可见的。该应用程序会一直待在那里,直到它关闭。
另外,当我使用 VS2017 在调试模式下运行应用程序时,index.html 文件只加载了 head 标签,没有 body 标签。
所有库和脚本都在头选项卡中本地引用,因为该应用也可以离线工作。下面是头部的示例。
配置:
index.html
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="scripts/datepicker/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="scripts/daterangepicker/daterangepicker.css">
<link rel="stylesheet" href="scripts/timepicker/bootstrap-timepicker.min.css">
<link rel="stylesheet" href="scripts/easyautocomplete/easy-autocomplete.css">
<link href="scripts/growl/jquery.growl.css" rel="stylesheet" type="text/css" />
<link href="scripts/jquery-confirm/jquery-confirm.min.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/SHMOStyles.css" />
<link rel="stylesheet" href="css/ripple.min.css">
<script type="text/javascript" src="scripts/jquery-2.2.3.min.js"></script>
<script type="text/javascript" src="scripts/jquery-ui.min.js"></script>
<script type="text/javascript" src="scripts/bootstrap.min.js"></script>
<script type="text/javascript" src="scripts/fastclick.js"></script>
<script type="text/javascript" src="mapapi.js"></script>
<script type="text/javascript" src="scripts/index.js"></script>
<script type="text/javascript" src="scripts/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="scripts/dataTables.bootstrap.min.js"></script>
<script type="text/javascript" src="scripts/hammer.min.js"></script>
我在 config.xml 中使用了一些插件,但是当我在生产环境或任何直接连接到互联网的设备中运行它们时,它们中的任何一个都没有问题。在生产中,它使用相同的凭据进行计算机登录和代理,因此我不会像在 Dev env 中那样获得登录提示。
config.xml
<vs:platformSpecificValues>
<vs:platformSpecificWidget platformName="windows" id="SIMSMobileV0" />
</vs:platformSpecificValues>
<plugin name="cordova-plugin-fastclick" spec="~1.0.0" />
<plugin name="cordova-plugin-file-opener2" spec="~2.0.19" />
<plugin name="cordova-sqlite-storage" spec="~2.3.1" />
<plugin name="cordova-plugin-camera" spec="~2.4.1" />
<plugin name="cordova-plugin-device" spec="~2.0.2" />
<plugin name="cordova-plugin-network-information" spec="~2.0.1" />
<plugin name="cordova-plugin-splashscreen" spec="~5.0.2" />
<plugin name="cordova-plugin-file" spec="~6.0.1" />
<plugin name="cordova-plugin-zeep" spec="~0.0.4" />
<plugin name="cordova-plugin-file" spec="~6.0.1" />
<plugin name="cordova-plugin-geolocation" spec="~4.0.1" />
<plugin name="cordova-plugin-insomnia" spec="~4.3.0" />
我尝试过的事情:
在 windows 10 虚拟机上覆盖代理设置,仍然会导致提示出现
将凭据保存在 Windows/代理主机的通用凭据中,不走运
- 为 npm、git、gradle 等添加了代理配置。无效
问题是,如何解决这种情况:
- 应用中出现代理登录提示?我做了一些研究,看起来科尔多瓦应用程序不支持这一点。但是,很想看看这是否可以做到。
- 向应用添加一个模块以在检测到无连接时管理此行为
- 在不安装任何软件或不连接到 VPN 的情况下以某种方式全局设置持久代理
如果您有任何其他建议/解决方案,我们非常欢迎。任何帮助都将不胜感激。
【问题讨论】:
-
@DaveAlden 你能帮忙吗