离子2错误cordova不可用

hho*_*tij 32 cordova-plugins ionic2

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

我试过的一种方法是:

import { GooglePlus } from "ionic-native";
Run Code Online (Sandbox Code Playgroud)

然后

GooglePlus.login().then(...)
Run Code Online (Sandbox Code Playgroud)

登录方法执行但总是抛出错误说 "cordova_not_available"

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

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

window.plugins.googleplus.login(...)
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能解决这个问题?

Aja*_*pta 64

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

ionic cordova platform add browser
Run Code Online (Sandbox Code Playgroud)

并运行它:

ionic cordova run browser
Run Code Online (Sandbox Code Playgroud)

而不是ionic serve.


gro*_*roo 15

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

例如,如果您使用的是原生Toast

那么你需要添加适当的离子依赖:

ionic plugin add cordova-plugin-x-toast --save
Run Code Online (Sandbox Code Playgroud)

但是你还需要添加cordova依赖项:

cordova plugin add cordova-plugin-x-toast --save
Run Code Online (Sandbox Code Playgroud)

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

Runtime Error Uncaught(in promise): cordova_not_available
Run Code Online (Sandbox Code Playgroud)

找到原因可能很棘手.

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

确保导入它:

import { Toast } from 'ionic-native';
Run Code Online (Sandbox Code Playgroud)

在构造函数中注入Platform:

constructor(public navCtrl: NavController, private platform: Platform) {...
Run Code Online (Sandbox Code Playgroud)

然后使用本机项:

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


Dee*_*eez 7

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

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

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