EXTJS: Uncaught ReferenceError: Декси не определена в myJavascriptFile.js: 18 - PullRequest
0 голосов
/ 01 марта 2019

Я заменяю одну оболочку IndexedDb (localForage) на другую (Dexie) и не могу запустить приложение, потому что рекомендованный способ интеграции его в среду ExtJs не работает для меня.Что я сделал не так?

Моя текущая версия / версии ExtJs: framework: 6.6.0.258 Cmd: v6.6.0.13 Последняя версия Dexie

Документация Dexie рекомендует вам настроитьваша база данных выглядит так:

 var db = new Dexie("MyDatabase");
     db.version(1).stores({
        myStoreName, "++id, indexOne, indexTwo",
        myOtherStoreName, "++id, indexOne, indexTwo",
     });

myExtJsFile.js

   Ext.define('DataLayer.Inferface', {
      extend: 'Ext.Component',
      xtype: 'DLInterface',
      config: {
          stuff...
        db: new Dexie("mydatabaseName"),
      }

В документации ExtJs рекомендуется использовать внешнюю библиотеку, чтобы ссылаться на нее в файле app.json в массиве js.

app.json

"js": [
   {
     "path": "${framework.dir}/build/ext-all-rtl-debug.js"
   },
   {
     "path": "dexie.js"     //Dexie is located in the same folder as app.json
   },

Я получаю успешную сборку, но когда я ее развертываю (запускаю локально), я получаю ошибку времени выполнения, указанную в заголовке этого вопроса.Я знаю, что intellisense в VSCode работает не так хорошо, поэтому я не особо задумывался над этим, когда у меня не было доступа к глобальному объекту Dexie.Я пробовал несколько разных способов и мест для загрузки этой библиотеки с m = не повезло.Я бы использовал CDN, но это приложение, способное работать в автономном режиме, поэтому я действительно хочу библиотеку локально.Как мне получать, ссылаться и использовать сторонние библиотеки в Ext?

Спасибо.

1 Ответ

0 голосов
/ 17 марта 2019

Если вы используете внешнюю библиотеку в Ext.define, попробуйте включить внешние библиотеки перед библиотеками extjs (ext-all-rtl-debug.js, app.js и т. Д.).

Другое решение - не подключать удаленные библиотеки к классуопределяет - используйте инициализировать / initComponent вместо.Пример:

Ext.define('DataLayer.Inferface', {
extend: 'Ext.Component',
xtype: 'DLInterface',
config: {
    stuff...
},
initComponent: function () {
    this.db=new Dexie("mydatabaseName");
    this.callParent(arguments);
}
...