Ionic CLI 3.8 更新 - Cordova 不可用

Posted

技术标签:

【中文标题】Ionic CLI 3.8 更新 - Cordova 不可用【英文标题】:Ionic CLI 3.8 Update - Cordova is not available 【发布时间】:2017-08-15 05:01:31 【问题描述】:

背景

在两个完全独立的 Ionic 应用程序上更新我的 Ionic CLI(用于验证错误)后,我尝试在我的 iPhone 和 XCode 模拟器上编译、构建、运行和模拟这些应用程序。这是我在更新后收到的警告:

> twine-app@0.0.1 run /Users/Anthony/dev/twine-app
> ionic cordova run ios --l --consolelogs

✖ cordova platform add ios --save - failed!
[WARN] Platform already added. Saving platforms to config.xml.
✔ cordova platform save - done!
[WARN] Detected @ionic/cli-plugin-cordova in your package.json.

       As of CLI 3.8, it is no longer needed. You can uninstall it.

[WARN] Multiple network interfaces detected!

因此,在看到此警告后,我尝试在我的 iPhone 和 XCode 模拟器中使用以下代码行使用 livereload 运行该应用程序:

ionic cordova run ios --livereload --consolelogs

ionic cordova emulate ios --livereload --consolelogs

错误

在那之后,我开始在每个 Cordova 插件的调用中收到一条警告,指出 cordova is not available:

示例包括但不限于:

[00:44:00]  console.warn: Native: tried calling StatusBar.styleDefault, but Cordova is not available. Make sure to 
            include cordova.js or run in a device/simulator 
[00:44:00]  console.warn: Native: tried calling SplashScreen.hide, but Cordova is not available. Make sure to include 
            cordova.js or run in a device/simulator 
[00:44:00]  console.warn: Native: tried calling SpeechRecognition.requestPermission, but Cordova is not available. Make 
            sure to include cordova.js or run in a device/simulator 

方法

以下是我尝试修复这些错误及其结果的所有方法:

    ionic cordova build ios:Cordova 插件在我的实际设备上工作,一切正常加载,没有错误。但是,这并不是真正的解决方案,因为我需要 livereload 来测试我的应用程序。

    ionic cordova platform rm ios && ionic cordova platform add ios:删除和添加iOS平台无效。

    npm install -g ionic@latest cordova@latest --save:删除 ioniccordova npm 包并将它们重新安装也无济于事。

    npm i:删除 node_modules 并重新安装所有模块并不能解决此问题。

    fetch-plugins:安装this package,删除项目根目录下的plugins文件夹,调用fetch-plugins无效。

由于我目前正在开发的两个 Ionic 应用程序都出现了这个问题,恐怕更多人会在更新他们的 Ionic CLI 时遇到这个问题。如果有人知道如何解决此问题,请在下面发表评论或发布解决方案。非常感谢您。

【问题讨论】:

【参考方案1】:

Ionic 团队在 3.8 发布后不久就发布了 Ionic CLI 3.8.1,因此修复此错误所需要做的就是运行以下命令:

ionic cordova emulate --address=localhost -slc ios

然后我收到了升级 Ionic CLI 的选项:

? The Ionic CLI (local version) has an update available (3.8.0 => 3.8.1)! Would 
you like to install it? Yes
✔ npm install --save-dev --save-exact ionic@latest - done!

[OK] Updated Ionic CLI to 3.8.1! ?

我所有的 Cordova 插件现在都可以正常工作了。

【讨论】:

我遇到了同样的问题,但是通过运行命令,我无法解决我的问题。你在这里做了别的什么吗?请告诉我。 我收到以下错误:xcodebuild: error: Unable to find a destination matching the provided destination specifier: platform:iOS Simulator, OS:latest, name:iPhone 5s The requested device could not be found because no available devices matched the request. Ineligible destinations for the "cSmart" scheme: platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Generic iOS Device Error: Error code 70 for command: xcodebuild with args

以上是关于Ionic CLI 3.8 更新 - Cordova 不可用的主要内容,如果未能解决你的问题,请参考以下文章

Ionic APP 热更新 之 产品发布状态下的热更新搭建,去local-dev-addon插件

ionic app 热更新

没有 Ionic 的设备上的 Cordova 热重载

在 Ionic 2 中使用第三方 cordova 插件和 TypeScript

Ionic 3 CLI 无法启动代理后面的项目

通过设置Ionic-Cli代理解决ionic serve跨域调试问题