离子应用程序-仅在iOs设备中运行应用程序时,SQLite错误“ plugin_not_installed”

时间:2018-07-14 14:35:24

标签: ios iphone sqlite ionic-framework ionic3

我使用Ionic3 + AngularJS构建了一个混合应用程序,它使用了SQLite数据库。

当我在Android设备上运行该应用程序时,它可以正常运行,但是当我尝试在iPhone或iPad上运行该应用程序时,出现以下错误: plugin_not_installed 。当应用尝试创建数据库时就会发生这种情况。

这是创建数据库的方式:

  public getDB(){
    return this.sqlite.create({
      name: 'namedatabase.db',
      location: 'default'
    }).catch( error => this.showError(error));
  }

catch()被调用,并且显示错误消息“ plugin_not_installed”。

使用以下命令安装的SQLite

 $ ionic cordova plugin add cordova-sqlite-storage
 $ npm install --save @ionic-native/sqlite

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用

在android模拟器中运行我的应用程序时,我遇到了同样的问题
  

ionic cordova运行android -lc

启动应用后,一切正常。但是在对代码和保存命令进行了几处更改之后,该应用会重新加载并显示在控制台中

  

console.warn:离子本机:deviceready在5000毫秒内未触发。当插件处于不一致状态时,可能会发生这种情况。尝试从plugins中删除插件,然后重新安装。
  console.warn:'本机:尝试访问SQLite插件,但未安装。
  console.warn:安装SQLite插件:'ionic cordova插件添加cordova-sqlite-storage'
  console.log:错误“ plugin_not_installed”

即使我按照控制台的要求进行操作,我仍然遇到相同的错误,并且无法创建我的SQLite数据库

我接下来要做的是使用上面的run命令重新运行该应用程序,但是我浪费了很多时间来等待该应用程序重新启动...(:

createDBFile() {
    this.sqlite.create({
        name: DB_NAME,
        location: 'default'
    }).then((db: SQLiteObject) => {
        this.db = db;
        console.log('BDD cree')
        this.stockageLocal.get('dbstatus').then(opened => {
            if (opened) {
                console.log('DB deja ouvert');
            }
            else {
                console.log('create all table')
                this.createTables();
            }
        })
    }).catch(err => {
        console.log(' err', JSON.stringify(err))
    });
}

答案 1 :(得分:0)

我遇到了同样的问题:plugin_not_installed。 我解决了在答应错误之后放入console.log检查,并发现该表不存在的情况。

代码:

this.sqlite.create({
  name: 'ionicdb.db',
  location: 'default'
})
.then((db: SQLiteObject) => {
  db.executeSql('create table if not exists MY_SQLITE_STORAGE(key VARCHAR(32) PRIMARY KEY, value VARCHAR(32))', [])
    .then(() => {
      console.log('Executed Create table if not exists');
      this.toastCtrl.create({
        message: 'Table created ',
        duration: 5000,
        position: 'center'
      }).present();
    }).catch(e => console.log('error: '+JSON.stringify(e)));
}).catch(e => console.log('error: '+JSON.stringify(e)));