我正在尝试在一个新的离子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对象上的插件属性一无所知的打字稿编译器。
我该如何解决这个问题?
答案 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地图密钥