我正在尝试自定义Moodle 3.8移动应用程序,我希望它具有针对我的品牌个性化的徽标和闪屏。我已经将回购从https://github.com/moodlehq/moodlemobile2.git
克隆到我的ubuntu 18.04机器中,并在moodleapp项目根目录上运行npm install setup
。我正在运行Ionic CLI 5.2.5
。npm install setup
成功完成后,我运行ionic serve --lab
,甚至使用--lab标志在firefox浏览器中查看我的应用程序。该命令执行应用程序时没有出现错误,并在浏览器中初始化应用程序,但问题出在这里,应用程序是空白的,除了一个暗屏幕外,什么都不显示。
我去检查元素,发现有一个错误,上面写着"window.openDatabase is not a function"
。Moodle移动应用程序3.8具有离线数据存储功能,使用SQLite数据库,我怀疑这是错误源,所以我在项目中安装了ionic cordova plugin add cordova-sqlite-storage
和npm install @ionic-native/sqlite
,但没有任何更改。我已经为这个错误研究了好几天了,但没有合适的问题来源和解决方案。完整错误为:
Unhandled Promise rejection: window.openDatabase is not a function ; Zone: <root> ; Task: Promise.then ; Value: TypeError: "window.openDatabase is not a function"
init sqlitedb.ts:152
SQLiteDB sqlitedb.ts:144
SQLiteDBMock sqlitedb.ts:31
getDB db.ts:45
CoreAppProvider app.ts:78
Angular 8
invoke polyfills.js:3
onInvoke Angular
invoke polyfills.js:3
run polyfills.js:3
Angular 3
invoke polyfills.js:3
run polyfills.js:3
f polyfills.js:3
invokeTask polyfills.js:3
runTask polyfills.js:3
o polyfills.js:3
SQLiteDBMock.prototype.init@http://localhost:8100/build/main.js:135760:26
SQLiteDB@http://localhost:8100/build/main.js:104930:14
SQLiteDBMock@http://localhost:8100/build/main.js:135647:28
CoreDbProvider.prototype.getDB@http://localhost:8100/build/main.js:83056:42
CoreAppProvider@http://localhost:8100/build/main.js:4415:30
_createClass@http://localhost:8100/build/vendor.js:11317:20
_createProviderInstance$1@http://localhost:8100/build/vendor.js:11281:26
initNgModule@http://localhost:8100/build/vendor.js:11234:28
NgModuleRef_@http://localhost:8100/build/vendor.js:12489:21
createNgModuleRef@http://localhost:8100/build/vendor.js:12478:12
debugCreateNgModuleRef@http://localhost:8100/build/vendor.js:14812:12
NgModuleFactory_.prototype.create@http://localhost:8100/build/vendor.js:15950:25
PlatformRef.prototype.bootstrapModuleFactory/<@http://localhost:8100/build/vendor.js:5876:78
F</l</t.prototype.invoke@http://localhost:8100/build/polyfills.js:3:14976
onInvoke@http://localhost:8100/build/vendor.js:5134:33
F</l</t.prototype.invoke@http://localhost:8100/build/polyfills.js:3:14916
F</c</r.prototype.run@http://localhost:8100/build/polyfills.js:3:10143
NgZone.prototype.run@http://localhost:8100/build/vendor.js:4951:69
PlatformRef.prototype.bootstrapModuleFactory@http://localhost:8100/build/vendor.js:5874:23
PlatformRef.prototype.bootstrapModule/<@http://localhost:8100/build/vendor.js:5953:59
F</l</t.prototype.invoke@http://localhost:8100/build/polyfills.js:3:14976
F</c</r.prototype.run@http://localhost:8100/build/polyfills.js:3:10143
f/<@http://localhost:8100/build/polyfills.js:3:20242
F</l</t.prototype.invokeTask@http://localhost:8100/build/polyfills.js:3:15660
F</c</r.prototype.runTask@http://localhost:8100/build/polyfills.js:3:10834
o@http://localhost:8100/build/polyfills.js:3:7894
polyfills.js:3:20723
onUnhandledError http://localhost:8100/build/polyfills.js:3
r http://localhost:8100/build/polyfills.js:3
microtaskDrainDone http://localhost:8100/build/polyfills.js:3
microtaskDrainDone http://localhost:8100/build/polyfills.js:3
o http://localhost:8100/build/polyfills.js:3
我陷入了困境,任何帮助都将不胜感激。
不确定你是否仍然坚持这一点,但以防万一其他人也有同样的问题:这种行为似乎与使用firefox有关。使用chromium浏览器不会引发此异常。
moodle移动开发团队建议使用铬进行桌面开发,尽管他们可能会说这是所必需的。