Cordova 无法使用 --target 读取未定义的属性“名称”

Posted

技术标签:

【中文标题】Cordova 无法使用 --target 读取未定义的属性“名称”【英文标题】:Cordova cannot read property 'name' of undefined with --target 【发布时间】:2018-01-28 10:13:16 【问题描述】:

当我使用指定的 --target 参数运行 ionic/cordova 模拟器命令时,我会收到无法读取未定义的属性“名称”错误。想知道是否有其他人以前得到过这个,以及是否有可用的修复程序。

命令运行:ionic cordova emulate ios --target="iPhone-6, 10.3" 和 ionic cordova emulate ios --target "iPhone-6, 10.3"

这是我的离子信息

cli 包:

@ionic/cli-utils  : 1.9.2
ionic (Ionic CLI) : 3.9.2

全局包:

Cordova CLI : 7.0.1 

本地包:

@ionic/app-scripts : 2.1.4
Cordova Platforms  : android 6.1.2 ios 4.4.0
Ionic Framework    : ionic-angular 3.6.0

系统:

Android SDK Tools : 25.2.2
ios-deploy        : 1.8.5 
ios-sim           : 6.0.0 
Node              : v6.8.1
npm               : 3.10.8 
OS                : macOS Sierra
Xcode             : Xcode 8.3.3 Build version 8E3004b 

【问题讨论】:

你能显示你使用的 CLI 命令吗? @Sampath ionic cordova emulate ios --target="iPhone-6, 10.3" 和 ionic cordova emulate ios --target "iPhone-6, 10.3" 问题已在https://***.com/questions/46328873/error-run-on-ios-emulator-after-update-to-ios-11-ionic-3?answertab=votes#tab-top解决 【参考方案1】:

对于那些在 2020 年使用当前设置仍面临此问题的用户:

ionic 3
iOS 13 simulators
Xcode - 11.3.1
iOS cordova@4 (the version I was using -> 4.5.5)

请将您的 iOS cordova 平台更新到 v5,例如:

ionic cordova platform rm ios

然后

ionic cordova platform add ios@5  (this will add ios - 5.1.1 which is 
current right now)

不要忘记更新资源,因为您可能会在“Xcode assets”下的资源中找到一些“Cordova bot”图像。

PS:我尝试了所有列出的解决方案,但对我没有任何帮助。另外,我从 Ionic 团队收到了一份简报,称 Apple 可能会停止一些与“webKitView”相关的功能,他们建议使用“cordova iOS v5”平台。所以,我认为现在是升级平台的好时机。

【讨论】:

我使用 ios 5.1.1 并且仍然发生【参考方案2】:

在 Xcode 10.3 中我不得不

    打开 Xcode 并选择我想要测试的 iOS 版本。 (就像Android Studio...尴尬...)
      那么, cordova run ios --list 返回的东西。

【讨论】:

【参考方案3】:

如果您运行以下命令并没有得到任何设备(如图所示):

cordova run ios --list
Available ios devices:
Available ios virtual devices:

这可能是由于 Ionic 指定了旧的 ios-sim 版本 4.4.0 而不是最新的。

cd platforms/ios/cordova && npm install ios-sim@latest
$ cd ../../../
$ cordova platform rm ios
$ cordova platform add ios@4.5.0
$ ionic cordova emulate ios --target --list
> cordova run ios --list --target --emulator
Available ios devices:

Available ios virtual devices:

iPhone-5s, 11.0
iPhone-6, 11.0
iPhone-6-Plus, 11.0
iPhone-6s, 11.0
iPhone-6s-Plus, 11.0
iPad-Air, 11.0
iPad-Air-2, 11.0
iPhone-7, 11.0
iPhone-7-Plus, 11.0
iPhone-SE, 11.0
iPad--5th-generation-, 11.0
iPad-Pro--12-9-inch---2nd-generation-, 11.0
iPad-Pro--10-5-inch-, 11.0
Apple-Watch-38mm, watchOS 4.0
Apple-Watch-42mm, watchOS 4.0
Apple-Watch-Series-2-38mm, watchOS 4.0
Apple-Watch-Series-2-42mm, watchOS 4.0
Apple-TV-1080p, tvOS 11.0
Apple-TV-4K-4K, tvOS 11.0
Apple-TV-4K-1080p, tvOS 11.0
iPad-Pro--9-7-inch-, 11.0
iPad-Pro, 11.0

你可以阅读更多关于这个问题here on Git

【讨论】:

谢谢 Sampath!【参考方案4】:

删除 iOS 版本。这对我有用:

cordova emulate ios --target "iPhone-7"

【讨论】:

嗯,这对我也有用,但是不包括版本,我无法在 10.3 和 11.0 之间进行选择。【参考方案5】:

看起来这是你的家伙:

issues.apache.org: cordova emulate ios with --target throws undefined error

他们说它已在 cordova-ios@4.5.0 中修复

所以试着去做

sudo npm install cordova-ios@latest

它应该可以解决您的问题并可能带来一些新问题?

希望对你有帮助。

【讨论】:

【参考方案6】:

首先使用 xcode 创建并命名模拟器(我建议使用易于键入的名称)。然后,一旦完成此操作,您就可以通过 xcode 本身运行模拟器,方法是在此 IDE 中运行项目或使用 CLI 命令。 参考:-https://developer.apple.com/library/content/documentation/IDEs/Conceptual/iOS_Simulator_Guide/TestingontheiOSSimulator/TestingontheiOSSimulator.html#//apple_ref/doc/uid/TP40012848-CH4-SW1

【讨论】:

以上是关于Cordova 无法使用 --target 读取未定义的属性“名称”的主要内容,如果未能解决你的问题,请参考以下文章

gradle:未安装(cordova 要求)

Cordova:无法调用未定义的方法“exec”

Visual Studio Cordova 构建失败

Cordova 构建/运行 android 失败:无法读取 null 的属性“标签”

安装cordova-sqlite-storage时出错

为什么反应会返回TypeError:无法正确读取未定义的'join'?