SQLite Ionic插件错误

时间:2016-05-27 01:04:04

标签: angularjs sqlite cordova ionic-framework android-sqlite

我正在基于here的原始文档在我的Ionic应用程序中创建数据库测试,但是当我创建并运行应用程序时,在终端上出现以下错误:

**Uncaught TypeError: Cannot read property 'openDatabase' of undefined**

请帮我解决这个问题。

我安装了ng-cordova插件并在index.html中添加了ng-cordova.min.js。

4 个答案:

答案 0 :(得分:0)

由于您在浏览器中运行,因此无法使用cordova.js和预期的设备功能。

这些通常是通过'mocks'来解决的,这些代码存在超出某些功能的代码。 ngCordova提供了一些。要使用它们,请将ngCordova.mocks.js文件添加到您的karma.conf。

也就是说,模拟不能保证完全测试所有ngCordova功能,您可能需要模拟。 From the docs

  

仅在手机上开发

     

在您的浏览器中进行开发时,Cordova插件无法正常工作,因为   每个插件访问一个特定的API(如相机,麦克风,   加速度计),在您的浏览器中不可用。另外,   某些插件在模拟器中不起作用,例如Camera插件   需要在物理设备上进行开发。

答案 1 :(得分:0)

某些插件无法在浏览器和模拟器上运行。您需要使用真实设备测试您的应用。特别是在处理数据库时。由于插件不起作用,您尝试从插件访问的所有内容都将是未定义的。

答案 2 :(得分:0)

在我的情况下,我通过移除cordova-sqlite-plugin插件并添加cordova-sqlite-storage解决了问题。

然后我输入离子状态重置以重新安装我在package.json

上定义的插件

它运作良好

=>这是移动设备的情况,对于浏览器,有必要使用:

$window.openDatabase("databasename" , '', 'database', 2000000)

答案 3 :(得分:0)

您可以查看此tutorial

当您看到此错误时:

  

TypeError:无法读取未定义的属性“openDatabase”

这是因为以下几个原因之一:

您没有将... constructor(@Optional() private activeModal: NgbActiveModal){ ... } ... finish(){ if(this.activeModal){ this.activeModal.dismiss(data); }else{ //regular component finish code } } 方法包装在$cordovaSQLite函数中。 您正尝试从Web浏览器测试此本机插件。 您实际上没有将基础SQLite插件安装到项目中。 导致此错误的最常见原因是#1和#2。只有在确认应用程序准备好后才能使用本机插件,因此$ionicPlatform.ready()方法。由于本机插件使用本机代码,因此无法通过Web浏览器对其进行测试。

阅读我链接的教程,因为它可以帮助您。