TypeError: Невозможно прочитать свойство openDatabase 'undefined

Я хочу работать с sqlite с картой cordova в первый раз. Как я читал в учебнике, я должен использовать ngcordova следующим образом:

var db = null;
app.controller('mainCtrl', function ($scope, $ionicSideMenuDelegate) {
    $scope.toggleLeft = function () {
        $ionicSideMenuDelegate.toggleLeft();
    }
    $scope.toggleRight = function () {
        $ionicSideMenuDelegate.toggleRight();
    }
})
.controller('home_ctrl', function ($scope, $cordovaSQLite) {
    db = $cordovaSQLite.openDB({name: "my.db"});
        //db = $window.opendb({name: "my.db"});
        $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people(id integer primary key, firstname text, lastname text)")
})
;

Когда я запускаю этот код, ошибка говорит:

TypeError: Cannot read property 'openDatabase' of undefined

В некоторых статьях, подобных этому: Как использовать службу sqlite ngCordova и Cordova-SQLitePlugin с Ionic Framework? рекомендует использовать такие команды: ionic start myApp sidemenu
Я не знаю, что это, я просто использую команду cordova, например: cordova run android или cordova create my_project
Что мне нужно сделать, чтобы создать таблицу из моего проекта cordova?

Ответ 1

Вы можете взглянуть на этот учебник:

https://www.thepolyglotdeveloper.com/2014/11/use-sqlite-instead-local-storage-ionic-framework/

Когда вы видите эту ошибку:

TypeError: Cannot read property 'openDatabase' of undefined

Это происходит по одной из нескольких причин:

  • Вы не обмениваете методы $cordovaSQLite в $ionicPlatform.ready().
  • Вы пытаетесь протестировать этот родной плагин из веб-браузера.
  • На самом деле вы не установили базовый плагин SQLite в свой проект.

Наиболее распространенными причинами этой ошибки являются # 1 и # 2. Родные плагины должны использоваться только после того, как приложение будет подтверждено, таким образом, метод $ionicPlatform.ready(). Поскольку родные плагины используют собственный код, вы не можете тестировать их из своего веб-браузера.

Прочитайте учебник, который я связал, потому что он вам поможет.

Привет,

Ответ 2

На самом деле я открыл старый проект и получаю эту ошибку только при запуске проекта с -cls (из-за liverelaod). Но у меня есть небольшая ошибка, чтобы исправить ее, поэтому я не слишком много ее исследовал (просто исправил без livereload). Но, возможно, этот маленький намек кому-нибудь поможет.