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 读取未定义的属性“名称”的主要内容,如果未能解决你的问题,请参考以下文章