Ionic Cordova SQLite 插件错误 Cannot read 属性 'openDatabase' of undefined
Ionic Cordova SQLite plugin error Cannot read property 'openDatabase' of undefined
我在 ngCordova 插件 cordovaSQLite 中有 1 个问题。下面的代码:
var db = $cordovaSQLite.openDB({ name: "myDB.db" });
我在浏览器中使用 ionic serve
。
错误:
Uncaught TypeError: Cannot read property 'openDatabase' of undefinedng-cordova.js:5058
openDBapp.js:27
(anonymous function)ionic.bundle.js:37388
(anonymous function)ionic.bundle.js:2241
onPlatformReadyionic.bundle.js:2220
onWindowLoad
你能帮帮我吗?
正如用户 jonnie 在他的 answer
中所述
Cordova is platform specific and doesn't work when you run ionic serve
和
you can replace the cordova plugin with window to use the websql databases so instead of sqlitePlugin.openDatabase() you can use window.openDatabase()
它应该可以在实际设备上正常运行。
您收到此错误是因为您尝试从 android 获取数据库连接但使用了错误的函数 openDatabase()。此功能将在客户端(浏览器)的情况下使用。使用 openDb() 函数从 android.
获取数据库连接
if (window.cordova) {
db = $cordovaSQLite.openDB({ name: "my.db" }); //device
console.log("Android");
}
else{
db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser
console.log("browser");
}
如果您在网络浏览器中进行测试,您将不会得到想要的结果。您需要一个实际的设备,可以是 Android 或 iOS。您可以使用 MEMU 或 Bluestack 模拟器来安装并检查您是否不需要实际设备。
请不要考虑其他步骤,那是浪费时间。
我在 ngCordova 插件 cordovaSQLite 中有 1 个问题。下面的代码:
var db = $cordovaSQLite.openDB({ name: "myDB.db" });
我在浏览器中使用 ionic serve
。
错误:
Uncaught TypeError: Cannot read property 'openDatabase' of undefinedng-cordova.js:5058
openDBapp.js:27
(anonymous function)ionic.bundle.js:37388
(anonymous function)ionic.bundle.js:2241
onPlatformReadyionic.bundle.js:2220
onWindowLoad
你能帮帮我吗?
正如用户 jonnie 在他的 answer
中所述Cordova is platform specific and doesn't work when you run ionic serve
和
you can replace the cordova plugin with window to use the websql databases so instead of sqlitePlugin.openDatabase() you can use window.openDatabase()
它应该可以在实际设备上正常运行。
您收到此错误是因为您尝试从 android 获取数据库连接但使用了错误的函数 openDatabase()。此功能将在客户端(浏览器)的情况下使用。使用 openDb() 函数从 android.
获取数据库连接 if (window.cordova) {
db = $cordovaSQLite.openDB({ name: "my.db" }); //device
console.log("Android");
}
else{
db = window.openDatabase("my.db", '1', 'my', 1024 * 1024 * 100); // browser
console.log("browser");
}
如果您在网络浏览器中进行测试,您将不会得到想要的结果。您需要一个实际的设备,可以是 Android 或 iOS。您可以使用 MEMU 或 Bluestack 模拟器来安装并检查您是否不需要实际设备。 请不要考虑其他步骤,那是浪费时间。