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). Но, возможно, этот маленький намек кому-нибудь поможет.