离子2错误cordova不可用

时间:2016-08-03 13:10:44

标签: cordova-plugins ionic2

我正在尝试在一个新的离子2项目(最新的ionic2版本)中使用cordova GooglePlus插件,但我总是遇到有关cordova的错误。 该插件已正确安装并显示在插件文件夹中。

我尝试过的一种方法是:

import { GooglePlus } from "ionic-native";

然后

GooglePlus.login().then(...)

登录方法会执行,但始终会抛出错误"cordova_not_available"

我希望先在我的Windows系统上使用ionic serve测试该应用,然后再将其部署到我的Android手机上。 如何在localhost服务器中提供cordova?从搜索中我了解到cordova.js已生成并始终包含在设备的部署包中。

我尝试的另一种方法是使用

window.plugins.googleplus.login(...)

但是这种方法不会通过对Windows对象上的插件属性一无所知的打字稿编译器。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:60)

如果您希望该插件适用于浏览器,则应添加platform browser并运行它:

ionic cordova platform add browser

并运行它:

ionic cordova run browser

而不是ionic serve

答案 1 :(得分:15)

当您使用ionic serve在Chrome中运行应用程序时,通常会发生此错误,这是正常的,因为浏览器中没有本机组件,但是当离子本机插件出现时,也会出现在模拟器和设备上即使您已为其添加了离子插件,您也可以添加点头。

例如,如果你是using native Toast

然后你需要添加适当的离子依赖性:

ionic plugin add cordova-plugin-x-toast --save

但您还需要添加cordova依赖项:

cordova plugin add cordova-plugin-x-toast --save

如果您忘记添加以后的cordova插件,您将收到如下错误:

Runtime Error Uncaught(in promise): cordova_not_available

找到原因可能很棘手。

添加离子和cordova依赖项后,您应该可以使用它。

确保导入它:

import { Toast } from 'ionic-native';

在构造函数中注入Platform:

constructor(public navCtrl: NavController, private platform: Platform) {...

然后使用原生项目:

this.platform.ready().then(() =>
      Toast.show("Successfull", '5000', 'center')
        .subscribe(
        toast => {
          console.log(toast);
        }
      ));

答案 2 :(得分:7)

使用ionic serve禁用所有cordova插件,因为它未在设备上运行。

而是使用ionic cordova run android 这将启动一个Android模拟器,应该允许所有的cordova插件运行

我也遇到过第二种方法,但语法必须是windows['plugins'].googleplus.login(...)

答案 3 :(得分:2)

有时使用离子Cordova运行浏览器不是最佳选择,因为它需要很长时间才能编译您的更改。

就我而言,导致此问题的是FCM插件。如果我使用离子服务,则它无法在浏览器上运行。由于我的代码位于app.component.ts中,因此我很容易解决问题。我只是使用以下行:

  if (platform.is('cordova')) 
     {  this.fcmx.onTokenRefresh().subscribe(token => { 
     this.pushNoti.storeNewToken(token); }); }

使用platform.is('cordova'),您可以防止导致麻烦的代码在浏览器上运行。

答案 4 :(得分:0)

仅在连接android设备后运行

ionic cordova run android

确保您纠正了Google地图密钥