TL; DR:我可以通过VS2015在开发模式下运行我们的应用程序,并在iPhone 5c上进行远程调试,但我不能在iPhone 4s上执行相同操作.
我在使用Cordova驱动的混合应用程序在我的开发环境中部署在一个特定设备上时遇到了一些困难...但是我不确定这是否是我做错了或者是否存在一些兼容性问题.在这里提出一个问题,希望有人可以帮助我解决发生的事情.
仅仅是为了一些背景:有问题的应用程序是使用英特尔XDK创建的,然后移植到Visual Studio 2015,当时英特尔最近删除了一些XDK的"调试"功能.有些事情需要调整,但该项目仍然包含一些英特尔的JS代码,就像在原始项目中一样.
我的环境包括:
配置此环境时,我按照此处的说明进行操作.该remotebuild
代理配置为使用http
仅保持它的简单,因为这是所有包含在企业网络内的反正.
在此之后,我可以毫无问题地在iPhone 5c上运行我们的应用程序,但尝试在iPhone 4s上运行它会在VS2015中出现错误,说明:
Failed to deploy iOS remote for <project_path>\bld\ios\Debug\buildInfo.json to http://10.66.7.23:3000/cordova:
Error from http get [object Object]: Error: socket hang up
注意:remotebuild
Mac上的控制台输出中没有错误,VS 正确构建项目,但随后无法部署它.
我还在两台设备上尝试了多个配置文件,使用iTunes,Xcode或Apple Configurator 2安装; 但是由于配置文件没有显示在iOS 8或更高版本的设备上,我甚至无法验证它们是否已安装.
这两个设备都可以安装和运行此应用程序的先前版本(在应用程序商店中可用),但我需要能够实时检查DOM,因为即使它们具有相同的屏幕大小,响应的断点也是如此表现不同.
所以,在我拿出我留下的小头发之前,请有人帮我解决这里到底发生了什么?我已经和他斗争了一个多星期了,我觉得我要绕圈子走了.
我意识到这对大多数人来说可能是一个愚蠢的,但由于我甚至不知道这叫什么,我一直无法在网上找到更多的信息..
分享我的代码的过度简化; 在没有真正考虑我在做什么的情况下,我最终得到了类似下面的内容:
var myArray = [];
var firstObject = {...};
var secondObject = {...};
myArray.push({firstObject, secondObject});
Run Code Online (Sandbox Code Playgroud)
在Chrome中,当我检查数组内容时,我有一个完全符合我预期的对象数组.如果我JSON.stringify(myArray)
,我得到以下内容:
[{"firstObject":{"ping":"pong"},"secondObject":{"ping":"pong"}}]
Run Code Online (Sandbox Code Playgroud)
但是,当其他人在IE中尝试此操作时,它抱怨语法和.push()
调用失败.
后来我意识到我真正打算做的是:
myArray.push({
firstObject: firstObject,
secondObject: secondObject
});
Run Code Online (Sandbox Code Playgroud)
幸运的是,使用这个数组的代码不需要改变,但我仍然对此感到困惑.有人能指出我的方向吗?这是来自较新的ES6语法吗?