Frage von einem Neuling. Ich versuche, den Weg durch Working with IndexedDB Tutorial zu folgen, die Jake Archibald's IDB library verwendet, aber Typoskript anstelle von Javascript verwenden. Ich habe bisher keinen großen Erfolg.Typescript und IDB-Bibliothek für die Verwendung von indexedDB. Anleitung benötigt
Mein Code sieht so aus.
Die Definitionsdatei lädt gut, da der Compiler keine Fehler verursacht und intellisense in VS-Code einwandfrei funktioniert.
schaffe ich mein Modul laden require.js auf meiner HTML-Seite verwenden, aber die Konsole zeigt folgende Fehlermeldung:
Uncaught TypeError: Cannot read property 'default' of undefined
at Object.<anonymous> (main.ts:8)
at Object.execCb (require.min.js:5)
at b.check (require.min.js:5)
at b.<anonymous> (require.min.js:5)
at require.min.js:5
at require.min.js:5
at each (require.min.js:5)
at b.emit (require.min.js:5)
at b.check (require.min.js:5)
at b.enable (require.min.js:5)
Nun, wenn ich default
aus dem Aufruf von idb.default.open(...)
entfernen, sagt der Compiler mich das 'Öffnen' existiert nicht beim Typ '.../idb'. Die Bibliothek exportiert standardmäßig idb
.
Ich vermisse eine Art von Initialisierung, aber ich kann nicht wirklich was oder wo sehen.
Kann jemand helfen?
ARBEIT AROUND
Dies ist, wie ich diese Arbeit schließlich gemacht.
import * as idxdb from "./idb";
import "./js/idb.js";
let dbPromise: Promise<idxdb.DB> = idb.open('test-db2', 1, (upgradeDb: idxdb.UpgradeDB) => {
console.log('making a new object store');
if (!upgradeDb.objectStoreNames.contains('firstOS')) {
upgradeDb.createObjectStore('firstOS');
}
});
Die erste import-Anweisung bringt die Typen ein, so dass sie kompiliert und Hinweise liefert. Die zweite Anweisung bringt das IDB-Objekt in den Mix.
Vielen Dank an @Josh für mich in die richtige Richtung.
Ich habe es endlich dank deiner Kommentare herausgefunden! Bearbeitete die Post für den Fall, dass sich jemand in der gleichen Situation befindet. Danke, dass du dir das angeschaut hast! – JdelaRubia