主要可能是新版本系统(或者软件)对于获取设备的返回数据格式作了修改
所以这里在 cordova build ios 获取可用设备列表的时候,会报 Cannot read property ‘toLowerCase’ of undefined。

解决方法很简单
打开这个文件:platforms/ios/cordova/lib/list-emulator-build-targets,
大概 54 行左右

device.availability.toLowerCase().indexOf('unavailable') < 0
改成:
device.isAvailable
所以改完之后完整的代码是:
availableDevicesInCategory.forEach(function (device) {
    // console.log(device);
    if (device.name === deviceType.name.replace(/\-inch/g, ' inch') && device.isAvailable) {
        availAcc.push(device);
    }
});
如果还不对,看一看这个 console.log(device); 输出是什么,我这里输出的是:
{ state: 'Booted',
  isAvailable: true,
  name: 'iPhone 11 Pro',
  udid: 'A4E72C68-XXXX-XXXX-XXXX-DFB57EB137B7' 
}
所以看看这个输出的内容就知道怎么改了。

没有评论

  • :arrow:
  • :grin:
  • :???:
  • :cool:
  • :cry:
  • :shock:
  • :evil:
  • :!:
  • :idea:
  • :lol:
  • :mad:
  • :mrgreen:
  • :neutral:
  • :?:
  • :razz:
  • :oops:
  • :roll:
  • :sad:
  • :smile:
  • :eek:
  • :twisted:
  • :wink: